MVP

作者: AlvinShen | 来源:发表于2017-06-25 15:32 被阅读0次

MVC痛点:Controller过大。

痛点举例:下雪Demo,拖住雪花可动这个需求需要依赖于Activity,导致Activity过重。


MVP和MVC的最大区别:

数据Model和view不交互。

好处举例:不会造成View(Activity)被finish回收之后,持有View(Activity)引用的Model才回调,此时发生的内存泄露

核心思想:

将activity的业务逻辑放到Presenter,并且把关于UI的逻辑抽象成View接口供Presenter回调, Model还是原来的Model

举例 加载数据进行显示的例子:

Presenter与Model:Presenter调用Model的loadData;Model加载数据完毕后 回调Presenter的onLoadDataSuccess

Presenter与View:presenter调用View的showloading、showDataResult

优点:

1、使用MVP之后,Activity就能瘦身许多了。基本上只有FindView、SetListener以及Init的代码。其他的就是对Presenter的调用,还有对View接口的实现。这种情形下阅读代码就容易多了。

而且你只要看Presenter的接口,就能明白这个模块都有哪些业务,很快就能定位到具体代码。Activity变得容易看懂,容易维护,以后要调整业务、删减功能也就变得简单许多。

2、利于单元测试。MVP中,由于业务逻辑都在Presenter里,我们完全可以写一个PresenterTest的实现类继承Presenter的接口,现在只要在Activity里把Presenter的创建换成PresenterTest,就能进行单元测试了,测试完再换回来即可。万一发现还得进行测试,那就再换成PresenterTest吧。

3.对于内存泄露方面

采用传统的MVC模式,一大堆异步任务和对UI的操作都放在Activity里面,比如你可能从网络下载一张图片,在下载成功的回调里把图片加载到 Activity 的 ImageView 里面,所以异步任务保留着对Activity的引用。这样一来,即使Activity已经被切换到后台(onDestroy已经执行),这些异步任务仍然保留着对Activity实例的引用,所以系统就无法回收这个Activity实例了,结果就是Activity Leak。

而MVP,可以在BaseActivity的onCreate的时候,统一通过view接口弱引用 与presenter建立联系。onDestroy的时候,进行分离。

缺点:

需要通过接口与视图进行操作,接口爆炸。接口封装时如果粒度小,接口数量陡然增多;如果粒度过大,耦合大、违反单一原则

缺乏自动性、监听性,UI和Data没能双向绑定、自动响应(可通过MVVM架构解决)

依然以UI事件驱动,避免不了findViewById、还需考虑activity的生命周期

封装示例--

abstract class BasePresenter<V, T extends BasePresenter>

MainActivity extends BaseActivty<ViewImpl, PresenterImpl>

相关文章

  • Android MVP

    Android MVP初探 Android MVP进阶 Android MVP高级 Android MVP扩展

  • MVP / RxJava / Retrofit / RxBus

    MVP Android MVP 详解(上) Android MVP 详解(下) Android中的MVP模式,带实...

  • 一套完整的Android通用框架

    转自吴小龙同学的博客 MVP模式 MVP简介 Android MVP Sample,MVP+Retrofit+Rx...

  • MVP简单尝试

    MVP模式解析 标签: Android 架构 MVP MVP模式的核心思想 MVP将Activity中的U...

  • MVP基础架构

    MVP 是什么 基础架构 登录例子 MVP的优缺点 一、MVP 是什么 MVP全名是 Model - View -...

  • android 安卓 mvp mvvm - mvp

    android 安卓 mvp mvvm - mvpandroid 安卓 mvp mvvm - mvvm MVP M...

  • MVP架构

    目录 1)MVP简介2)MVP实例 1)MVP简介 MVP模式将Activity中的业务逻辑全部剥离出来,Acti...

  • MVC和MVP

    Android mvp 架构的自述 如何更高效的使用MVP以及官方MVP架构解析 老的MVC架构 新的MVP架构 ...

  • MVP系列-Android平台-第1讲-初探MVP

    MVP系列-Android平台-第1讲-初探MVP 内容一:什么是MVP?什么是MVC? 第一点:什么是MVP? ...

  • MVP框架学习

    一、MVP介绍 二、为什么使用MVP模式 三、MVP与MVC的异同 四、使用MVP实现Android的登录的Dem...

网友评论

      本文标题:MVP

      本文链接:https://www.haomeiwen.com/subject/cxcbqxtx.html