共通点:在 View 与 Model 直接增加一个隔离层,解除强耦合关系
MVC
View -> Controller -> Model 单向调用,Model 更新时通过监听器通知 View 界面,由 View 再次发起调用链获取最新数据
缺点:
- View 部分逻辑的测试困难
- View 与 Model 之间存在监听器的耦合,造成分离重用困难
- 后期难以追踪分析、整理 Model 与 View 的互动关系
MVP
View <-> Presenter <-> Model 双向调用,一切业务逻辑调度全部交由 Presenter 负责,Model 更新时,监听事件将发送至 Presenter 进行处理,最终调度 View 进行数据绑定渲染
缺点:
Presenter 需要手工同步数据更新与 View 绑定,工作量大,维护困难
MVVM
View <-> ViewModel <-> Model 双向调用,ViewModel 即是通过某种数据绑定引擎,将 View 与 Model 进行自动化双向绑定,减轻手工编辑绑定 Presenter 的工作量
缺点:
数据绑定过程由引擎自动生成,无法通过断点调试