MVC
Model,View, Controller
1.Model
Model代表了描述业务路逻辑,业务模型、数据操作、数据模型的一系列类的集合。这层也定义了数据修改和操作的业务规则。(定义模型和业务)
2.View
View代表了UI组件,像CSS,jQuery,html等。他只负责展示从controller接收到的数据。也就是把model转化成UI。(UI显示)
3.Controller
Controll负责处理流入的请求。它通过View来接受用户的输入,之后利用Model来处理用户的数据,最后把结果返回给View。Controll就是View和Model之间的一个协调者。(协调)
MVP
Model,View, Presenter
1.Model
Model层封装各种数据源,例如网络,蓝牙,本地数据库等,为Presenter层提供简单接口。(数据接口)
2.View
View代表了UI组件,像CSS,JQuery,html等。他只负责展示从Presenter接收到的数据。(UI)
3.Presenter
Presenter负责处理View背后所有的UI事件。它通过View接收用户输入,之后利用Model来处理用户的数据,最后把结果返回给View。与View和Controller不同,View和Presenter之间是完全解耦的,他们通过接口来交互。(业务接口)
我以为MVC 和 MVP的不同主要在于
(1)层级指责不同:MVC 的 Model 需要负责业务的处理,而MVP的Model只需要提供简单数据接口即可。Presenter 和 Controller 这两层在两种架构上处于同一位置,但是Contoller需要做的是协调,而Presenter所做的则是业务逻辑操作。
(2)层级通信方式的不同:MVP中View层和Model层间没有直接通信,他们通过往中间人Presenter中注入相应的业务回调接口,来监听业务回调数据,同时他们也持有Presenter实现的对应接口,来告诉业务层外部发生了什么。而MVC中Model层和View层是可以直接进行通信的,并不非要依赖接口。
MVP的优点
(1)职责分离:UI改版,只需修改View层即可,业务逻辑发生变化只需修改Presenter,而数据获取方式发生变化只需修改Model层,这种职责分工只需定义好接口就能实现并行开发,能够提高开发进度。
(2)逻辑清晰:新的团队成员,很快就能读懂现有的逻辑,快速上手。
MVP的缺点
(1)类数量明显增加:层级调用间增加接口通信,为配合架构类的数量和代码量会明显增加。
(2)调用栈变深:因为调用栈变深的缘故,团队成员必须明确每个类的职责才能准确的编程,否则可能打乱框架从而无法达到职责分离的目的。
MVVM
MVVM即Model-View View Model。这个模式提供对View和View Model的双向数据绑定。这使得View Model的状态改变可以自动传递给View,View层会相应的变动UI;而View层的变动也会实时反映到View Model。
我以为 MVVM与MVP并没有特别本质上的区别,它只是对MVP模式进行了更进一步的分层。使用UI与属性模型之间的映射关系,实现了UI代码与业务逻辑之间的分离。从此UI与逻辑无关。
最后说一下,其实设计模式这种东西没有好坏之分,千万不要生搬硬套。在不同的项目下,采用符合自己项目需求的设计才是王道。
网友评论