一、什么是 MVC 开发模式
1.1 MVC 开发模式的介绍
- 概念
MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。
模式最早由Trygve Reenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。MVC模式的目的是实现一种动态的程序设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式透过对复杂度的简化,使程序结构更加直观。软件系统透过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以依据自身的专长分组:
- Model: 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。Model 有对数据直接访问的权力,例如对数据库的访问。Model 不依赖 View 和 Controller。
- View: 界面设计人员进行图形界面设计,用于展示数据
- Controller: 起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。事件包括用户的行为和数据 Model 上的改变。
- 图示
1.2 MVC 开发模式在项目中的架构
-
实际项目
-
小困惑
初学的时候可能有点迷惑。Controller 层直接与 Dao 层打交道不就行了吗?为什么还要这么麻烦多了个 Service 层。直到自己开始写一些业务的时候,才开始理解这样分层的好处。举个简单的小例子:例如用户的注册。我们一般都是先去查询数据库存不存在该用户,如果不存在,则注册。如果存在,则返回用户已经被注册信息。这里涉及到两个业务,分别是根据用户名查询数据库和往数据库中插入一条用户的记录。如果我们把这两个功能都在 Dao 层实现,并在 Controller 层调用,代码的耦合度就高了。下次我们要复用这两个功能的时候就不太方便,或者说我们想组合这些简单的需求完成一个复杂的功能的时候就没那么容易了。最好的方式就是在 Dao 层定义对数据库最基本的增删改查,在 Service层 将 Dao 层的功能组合在一起,来完成一个复杂的功能。
二、什么是 MVP 开发模式
2.1 MVP 开发模式的介绍
-
概念
MVP 的全称为 Model-View-Presenter,MVP 是从经典的模式MVC演变而来。Model 提供数据,View 负责显示,Presenter 负责逻辑的处理。 -
图示
三、MVP 与 MVC 模式的区别
MVP 与 MVC 有着一个重大的区别:在 MVP 中 View 并不直接使用 Model,它们之间的通信是通过 Presenter(MVC 中的 Controller)来进行的,所有的交互都发生在 Presenter 内部,而在 MVC 中 View 会直接从 Model 中读取数据而不是通过 Controller。在MVC里,View 是可以直接访问 Model 的。从而,View 里会包含 Model 信息,不可避免的还要包括一些业务逻辑。在 MVC 模型里,更关注的 Model 的不变,而同时有多个对 Model 的不同显示及 View。所以,在MVC模型里,Model 不依赖于 View,但是View 是依赖于 Model 的。不仅如此,因为有一些业务逻辑在 View 里实现了,导致要更改 View 也是比较困难的,至少那些业务逻辑是无法重用的。