回顾一下MVX模式
2017-11-26 本文已影响56人
7天苹果
一 、MVC
MVC是应用最广泛的软件架构之一,一般MVC分为:Model(模型)、Controller(控制器)和View(视图)。这主要是基于分层的目的,让彼此的职责分开。
- Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。
- View(视图)是应用程序中处理数据显示的部分。
- Controller(控制器)是应用程序中处理用户交互的部分。
View一般是通过Controller来和Model进行联系的。Controller是Model和View的协调者,View和Model不直接联系。基本联系都是单向的。
如图:

添加用户操作之后:

用户(User)通过Controller来操作Model以达到View的变化。
优点: 耦合性低、重用性高、生命周期成本低、部署快、可维护性高、有利软件工程化管理
缺点: 由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。
对于小项目,MVC反而会带来更大的工作量以及复杂性。
二、MVP
MVP是从经典的MVC模式演变而来的,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model负责提供数据,View负责显示。作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。

- 各部分之间的通信,都是双向的。
- View 与 Model 不发生联系,都通过 Presenter 传递。
- View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里
三、MVVM
因为Presenter层比较笨重,所以产生了ViewModel,ViewModel本身封装了一堆View和Model层同步的逻辑。把同步自动化,从而让开发人员专心于维护业务逻辑代码。
