职责划分

前面已经提到, MVP没有固定的形式, 但是代码是死的, 人是活的, 开发团队制定一个标准, 然后大家遵守执行, 在一定程度上能解决这个问题. 因此, 在此我会尽量通过各种使用场景将M, V, P各自的职责具象化.

注意: 其他所有特殊的具体情况均默认包含了基本职责

1. 基本

  • View

    • 显示/隐藏加载框

    • UI与数据的绑定

    • 显示错误消息

    • 页面跳转

    • 转发请求至Presenter

    • 发送/监听RxBus事件

  • Presenter

    • 转发请求至Model

    • 检查用户输入是否合法

    • 控制View显示/因此加载框

    • 解析请求结果

    • 控制View显示错误消息

    • 控制View进行界面跳转

    • 控制登录状态

    • 从Model获取本地数据

    • 发送/监听RxBus事件

    • 尽量不要持有Context等与Framework相关的对象.

  • Model

    • 发送网络请求

    • File/SP/DB数据存取

2. 上传图片

  • View

    • 压缩图片

    • 转发上传请求至Presenter

  • Presenter

    • 转发上传请求至Model

  • Model

    • 上传图片

3. 分页

  • View

    • 显示/隐藏正在加载

    • 显示所有页数加载完成

  • Presenter

    • 控制页数的增长, 控制页数的置零

    • 控制何时能请求下一页, 何时不能请求下一页.

    • 控制View显示所有页数加载完成

    • 控制View显示/隐藏正在加载

to be continued...

MVP不是银弹, Clean也不是银弹, 引入了MVP, Clean也不能立即就提高代码质量, 减少bug. 重点不是学习架构, 而是学习这种思维: 如何把缠在一起的代码拆分, 如何把拆开的代码再组合. 如何在解决问题的时候把问题合理的拆分, 又如何将拆分的零件合理的组装成解决问题的工具. 只有真正将这种思维方式融入到自己代码的每一处, 才能从根本上解决质量的问题.

Last updated