1. MVC模式
- View: 负责展示视图
- Model: 负责数据存储(网络请求)
- Controller:
- 对于View: 负责响应交互, 刷新视图
- 对于Model: 负责发起请求, 接收数据
2. MVP模式
可能发现MVP与MVC从流程上并没有多大的区别, 那么MVP的意义是什么呢?
上边我们讨论的都是对于单一业务中, MVC/MVP的场景, 下边我们看下对于多业务的场景
3. 多业务场景的MVC/MVP
- 多业务组合的MVC
- 多业务组合的MVP
我们可以看到, 当一个页面的业务模块变多时, Controller要将每个业务的逻辑处理, 数据等都写在一起, 这样Controller的代码量就会成倍增长, 这也就是 *胖VC*
的原因
那么对于MVP, 每个模块的业务处理都有对应的Persenter来处理, 每个模块都互不相关(理想状态下), 我们的ViewController只负责在生命周期中调度View或Presenter
4. MVP的优劣势
- 优势
- 每个模块的业务逻辑分离开来, 更清晰
- 模块的复用性高, 可以拿走即用
- 便于单元测试
- 面向协议编程的思想, 通过协议约定让代码更健壮
- 劣势
- 文件, 协议数量会增加
- 模块的划分需要清晰的思路, 如果划分的不合理将会事倍功半
- 模块间的关系处理变得复杂