实线代表方法调用,虚线代表事件通知。
1.MVC
graph LR
View .->Controller
graph LR
Controller -->Model
graph LR
Model-->|修改| View
View 事件触发到 Controller
Controller 完成业务逻辑后,通知 Model 改变状态
Model 将新的数据发送到 View,用户得到反馈
2.MVP
graph LR
Presenter -->Model
Model --> Presenter
Presenter -->View
View --> Presenter
MVC 中的 Controller 只知道 Model 的接口,因此它没有办法控制 View 层的更新
MVP 模式中,View 层的接口暴露给了 Presenter 因此我们可以在 Presenter 中将 Model 和 View 一同改变,以此来实现 View 和 Model 的同步更新。
3.MVVM
graph LR
ViewModel --> View
View .->|事件| ViewModel
ViewModel -->Model
Model --> ViewModel
MVVM 模式 思路基本上与 MVP 模式完全一致。
不过,其采用双向绑定(data-binding):将 View 和 Model 的同步更新给自动化了。
双向绑定简单实现:通过输入事件 改变 数据, 通过数据拦截 改变 视图