MVP 架构

组件:

StackOverflow 文档

  • 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 组件的一部分,它是愚蠢的,被动的……质量较小;
  • 由于视图愚蠢,大多数业务逻辑都被封装,这提供了极好的可测试性。可以引入模拟对象来测试域部分。
  • 分离的实体更容易保持头脑,责任明显分开。

缺点

  • 你将编写更多代码。
  • 对于没有经验的开发人员或那些尚未使用该模式的人来说,这是一个障碍。