MVP和MVVM模式(笔记)
2019-05-22 本文已影响0人
葵自渡_
1.MVP模式
M:Model(数据层,提供数据)
V:View(视图层,负责显示)
P:Presenter(控制器,负责逻辑的处理)(最核心的一层)
特点:
- MVP是面向DOM编程。
- 在MVP中,View并不能直接与Model发生交互,而需要通过Presenter发生通信,此时Presenter相当于一个中转站。所有的交互都发生在Presenter内部
- Presenter与View没有直接关联,是通过定义好的接口进行交互
mvp.png
优点:
- 模型与视图完全分离,修改view时不会影响model
- 可以更高效地使用model,因为所有的交互都发生Presenter里
- 可以将一个Presenter用于多个View,而不需要改变Presenter的逻辑。
- 如果把逻辑放在Presenter中,就可以脱离用户接口来测试这些逻辑(?)
缺点:
- View和Presenter的交互会过于频繁
- 当Presenter过多地渲染了View,一旦视图需要变更,那么Presenter也需要变更了
ps:在MVC里,View是可以直接访问Model的,但是我们不建议在 View 中依赖 Model,而是要求尽可能把所有业务逻辑都放在 Controller 中处理,而 View 只和 Controller 交互
2.MVVM模式
M:Model(数据模型,数据和业务逻辑都在这层定义)
V:View(视图层,负责显示)
VM:ViewModel(视图模型,负责监听Model中数据的改变并控制视图的更新,处理用户交互操作)
特点:
- MVVM是面向数据编程。
- 在MVVM中,只需要关注M层,数据发生变化,页面会重新渲染。
- 在MVVM中,View与Model没有直接联系,而是通过ViewModel交互
- Model和ViewModel之间有双向绑定。
MVVM.png
优点:
- 减少DOM操作
- 实现了Model和View的数据自动同步
- 可重用性,低耦合,可测试,独立开发