MVP(Model-View-Presenter) 是总所周知 MVC 模式的一个演变,他们的主要目的都是划分模块职责,降低模块耦合,易测试,提高代码复用,这里主要针对 Android 平台来简单分析 MVP.
1.层级责任
Model: 负责数据的检索,持久化等操作
View: 负责 UI 的绘制和用户的交互
Presenter: 作为 Model 和 View 的中间协调部分,负责两者之间的业务逻辑处理
2.与 MVC 模式的区别
MVP 模式与 MVC 模式从层级数据流向上来说一个主要的区别应该就是:MVC 模式允许 View 层和 Model 层直接通讯.从图 1 和图 2 可以看到 MVP 和 MVC 的区别.
图 1MVC 模式中 Model 可以直接 update data 到 View 层。所以当某个 View 的功能很复杂的时候,View 和 Model 的耦合度可能会很高(并且在 android 的开发中 Activity 通常会充当 controller&view 的角色,结果 Activity 就很臃肿).而 MVP 模式就没有这个问题,View 会抽象出来一系列操作 UI 的接口(Model 层也可以),Presenter 拿到的都是其他两个层级的接口来做业务逻辑的处理.这样不仅可以使 View 和 Model 之间的耦合度降低,还可以更易得进行单元测试.
3.MVP 的优缺点
优点:降低耦合,层级职责更明显,易于单元测试
缺点:造成类数量爆炸,代码复杂度和学习成本高,在某些场景下 presenter 的复用会产生接口冗余
---------------后续补充 网站申请空间中
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于