美文网首页
MVC/MVP/MVVM浅析

MVC/MVP/MVVM浅析

作者: 卜卜Bruce | 来源:发表于2018-03-31 22:30 被阅读0次

MVC

Model-View-Controller (MVC) 体系结构模式将应用程序分成 3 个主要组件组:模型、视图和控制器。

Model: 不依赖用户界面,直接管理数据,逻辑和应用的规则。管理应用的数据,从controller接收用户的输入。
View:一切信息的输出显示都能被称为View,比如图表;同一信息可能有多个Views,比如表格等。以特定的形式显示Model。
Controller:接收输入并且转换为命令给model或者view。响应用户的输入,传递给Model。

Diagram of interactions within the MVC pattern 模块之间的依赖关系如下图所示,即Model是完全独立于View和Controller的 mvc.png

但是在android里,用户的控制事件(如点击,滑动等)是在View中的,所以android中MVC如下图所示:


android mvc.png

基本的结构是activity/fragment持有Model和Controller的实例,并且注册回调到Model层用来更新View;Controller的实例持有Model的实例用来传递用户请求。

优点:

  1. 同步开发,多个程序员可以同时开发View/Model/Controller。
  2. 高内聚,所有逻辑相关的都放在Controller里面,特定模块的Views也都在一起。
  3. 低耦合,MVC本质上就是为了分开View、Model、Controller。
  4. 易于修改,因为各层的职责独立,所以易于扩展和修改。
  5. 一个Model可以有多个View。

缺点:

  1. 代码导航性复杂,因为引入了新的抽象层,要求使用者能使用MVC的分解标准。

MVP

Model-View-Presenter 是从MVC衍生出来的。在MVP中,presenter的作为一个“中间人”,所有的显示逻辑都放在presenter中。
MVP更好的帮助单元测试,并且促进了现实逻辑的关键点分离。


Model_View_Presenter_GUI_Design_Pattern

Model:会被显示在界面上的数据。
View:被动的界面,来显示数据(medel)并且分发用户操作给presenter来处理数据。
Presenter: 处理Model 和View,从Model获取数据,在View中显示。

android_mvp.png

MVVM

Model-View-ViewModel
Model:数据访问层
View:如同MVC MVP一样,显示界面
ViewModel:暴露View的一些属性和行为的抽象,用来代替Controller和Presenter。在ViewModel中建立View和Model中数据的绑定。
Binder:隐式存在于MVVM模式中,让View和数据更好的的同步,简化了繁琐的代码。

MVVMPattern

相关文章

网友评论

      本文标题:MVC/MVP/MVVM浅析

      本文链接:https://www.haomeiwen.com/subject/ykagcftx.html