架构设计与重构iOS Developer

架构思维系列之MVP架构

2016-08-07  本文已影响324人  践行者

MVP架构

什么是MVP

MVP是MVC的变种,其中Model和View的定义与MVC的一致,不同点在于:MVC的Controller是管理一组Model与View之间交互逻辑,是一个管理者;而Presenter(展示者)则是Model于View之间的连接者,针对特定模块的View提供对应的格式化的Model数据,将View中的行为反馈到Model中。所以MVC中的Controller一般会管理一个或多个Model和一个或多个View,而Presenter则是 M-P-V 一对一,有更细的粒度和更好的解耦。是针对有GUI存在的应用程序,目的在于,对于GUI层来说,把UI展示与逻辑分开。

mvc-vs-mvp.jpg

<pre>

MVP结构图

MVP-struct.png

MVP变种:Passive View

在这种模式下,View和Model之间不能直接交互,View通过Presenter与Model打交道。Presenter接受View的UI请求,完成简单的UI处理逻辑,并调用Model进行业务处理,并调用View将相应的结果反映出来。View直接依赖Presenter,但是Presenter间接依赖View,它直接依赖的是View实现的接口。

组成

<code>
接口的作用类似给层与层之间制定的一种通信协议,两个不同的层级相互交流,只要遵守这些协议即可,并不需要知道具体的实现是怎样
</code>

规则

MVP优点

MVP深入思考

对于 Presenter 的设计,或者说具体应该把哪些内容放到 Presenter 中,是一个关键。Model 并不是必须有的;如果带有 Model,则 Presenter 要实现 Model 的回调,在回调中把数据传给 View 或响应。所以 Presenter 必须得有 View 的引用,但可以不用 Model.

参考文章

1.Andriod MVP架构

http://toughcoder.net/blog/2015/11/29/understanding-android-mvp-pattern/

2.Google Andriod架构蓝图

https://github.com/googlesamples/android-architecture

上一篇 下一篇

猜你喜欢

热点阅读