还原真实的MV*模式
职责分离的思想
Model + View
MVC
- Controller处理Model和View之间的应用逻辑。Model负责业务逻辑。
- 三者的依赖关系:Controller和View依赖Model,Controller和View相互依赖。
-
三者的调用关系(工作流程):用户操作界面,View产生应用数据,交给Controller对数据进行预处理,进行应用逻辑,之后转交给Model,进行业务处理。之后Model通过订阅者模式对View进行变更通知。
- MVC模式的优缺点:
- 优点:
- 业务逻辑和应用逻辑分离程度较高
- 观察者模式可以做到多视图同时更新。
- 缺点:
- Controller测试困难,缺少View无法进行测试。
- View无法组件化,强依赖特定的Model。
MVC Model 2
- 应用环境:服务器和客户端之间
- 工作流程:服务端接受到来自客户端的请求之后,服务端通过路由规则把这个请求交给特定的Controller进行处理,又相应的Controller来进行对应的应用逻辑,对Model进行操作,Model执行业务逻辑之后,然后用数据去渲染特定的模板。返回给客户端。
MVP
- Passive View
- 组成部分:View + Model + Presenter
-
调用关系:用户对View进行操作,应用逻辑转交给Presenter,之后Presenter对Model进行相应的操作,等待Model执行完业务逻辑之后,通过观察者模式把自己变更的消息提供给Presenter,Presenter接收到消息之后通过View提供的接口去更新界面。
- 重点:MVC中,Controller不可以对View进行操作,但是Presenter可以对View进行操作,View需要提供一组对界面操作的接口对Presenter进行调用。
- 优缺点:
- 优点:1. View可以组件化。2. 便于测试,View只需要给Presenter提供一个简单的接口就好了。
- 缺点:Presenter维护比较困难应用逻辑+View -> Model/Model -> View的转化。
-
Supervising Controller
- Presenter会把一部分简单的同步逻辑交给View进行处理,Presenter只负责比较复杂的高层次的UI制作。
MVVM
- 组成部分:View + Model + ViewModel ViewModel 含义是“Model of View”视图的模型,包括了领域模型(Domain Model)和视图的状态(State)。简单的可以理解成页面上所显示内容的数据抽象。
-
工作流程(调用关系):ViewModel里面有一个叫做Binder高智能工具,可以将View和Model联系起来。只需要在View指令式的声明是和哪一块Model绑定在一起的,就可以通过Binder自动进行双向数据绑定。数据变更实时渲染。MVVM把View和Model的同步逻辑自动化了。以前Presenter负责 的View和Model同步无需手动操作,自动交由框架提供的Binder进行负责。
- 优缺点:
- 优点:提高可维护性,简化测试。
- 缺点:
- 对于过于简单的图形界面不适用。
- 对于大型的图形应用程序,视图状态较多的,ViewModel的构建和维护成本很高。
- 数据绑定的声明是指令式的写在View模板中的,所以没有办法去打断点debug。