重新认识 MVC 和 三层设计模式
2016-08-01 10:18:51

重新认识 MVC 和 三层设计模式

首先不得不承认,身边有一群8年+工作经验的大牛就是爽,纠正了我一个认知上的错误

首先来看一下官方的解释:

MVC

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

MVC图

三层架构设计模式

  • 表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
  • 业务逻辑层(BLL):针对具体问题的操作,也可以说是对数据层的操作,对数据业务逻辑处理。
  • 数据访问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、修改、更新、查找等。

我想说的是,因为老师夜以继日对我讲,MVC三层模式,从而导致我将这两个东西搞混了。所以现在我来重新理解下。

简单的说:

  • MVC 是应用在三层架构模式中表现层里面的一种软件设计规范,它只存在于表现层,它不是一种架构设计规范!在表现层的设计还有 MVVM,MVP等,在这里的model,应该理解为viewModel,view就是web界面,controller则是页面请求的逻辑处理

  • 三层架构设计是一种架构设计方案,相对来说理解起来比较简单,但需要注意的是,实体模型并不能算作是一个层

具体的理解画一个图吧

MVC 三层模式图解

然后稍微的说一下MVVM和MVP

  • MVVM: 主要用来做 WPF

  • MVP: MVP和MVC很像,但是有点区别。在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。

  • MVC: 在MVC里,View是可以直接访问Model的!从而,View里会包含Model信息,不可避免的还要包括一些业务逻辑。 在MVC模型里,更关注的Model的不变,而同时有多个对Model的不同显示,即View。所以,在MVC模型里,Model不依赖于View,但是View是依赖于Model的。不仅如此,因为有一些业务逻辑在View里实现了,导致要更改View也是比较困难的,至少那些业务逻辑是无法重用的。

其实今天还学了下 依赖注入的一些东西,很深奥,有空再说吧!