MVP 架构
组件:
- Model 是负责域数据的接口(在 GUI 中显示或以其他方式执行)
- View 负责表示层(GUI)
- 演示者是模型和视图之间的中间人。它会对用户在 View 上执行的操作做出反应,从模型中检索数据,并对其进行格式化以便在 View 中显示
组件职责:
模型 | 视图 | 主持人 |
---|---|---|
与 DB 层通信 | 呈现数据 | 对模型执行查询 |
举办适当的活动 | 接收活动 | 格式化来自 Model 的数据 |
非常基本的验证逻辑 | 将格式化数据发送到视图 | |
复杂的验证逻辑 | ||
**** MVC 和 MVP 之间的差异 :
- MVC 中的视图与 Controller 紧密耦合,MVP 的 View 部分由 UIViews 和 UIViewController 组成
- MVP View 尽可能笨,并且几乎没有逻辑(就像在 MVVM 中一样),MVC View 有一些业务逻辑并且可以查询模型
- MVP 视图处理用户手势并委托与 Presenter 的交互,在 MVC 中,Controller 处理手势和命令模型
- MVP 模式高度支持单元测试,MVC 支持有限
- MVC Controller 有很多 UIKit 依赖项,MVP Presenter 没有
优点:
- MVP 使 UIViewController 成为 View 组件的一部分,它是愚蠢的,被动的……质量较小;
- 由于视图愚蠢,大多数业务逻辑都被封装,这提供了极好的可测试性。可以引入模拟对象来测试域部分。
- 分离的实体更容易保持头脑,责任明显分开。
缺点
- 你将编写更多代码。
- 对于没有经验的开发人员或那些尚未使用该模式的人来说,这是一个障碍。