我眼中的MVP

1、概述

什么是MVP模式呢?相信大多数人都能说出来MVP是MVC的一个演化版本,虽说它们之间有所不同但是其基本思想有相似之处。MVP中,M代表的是Model,V代表的是View,P代表的是Presenter这相当于MVC中的Controller。MVC在Android中的体现是,Model是JavaBean,View是xml布局文件,Controller是Activity。但是Activity并不是一个单纯的Controller,因为做为Android的脸Activity兼顾这和用户交互的责任,因此不可避免的会涉及到事件处理。所以Activity即像是View又像是Controller 且代码通常很臃肿。

2、MVP与MVC的区别

两者之间最大的区别就是,MVP模式中View不可以直接访问Model,而是通过Presenter来进行的。MVC模式中View是可以直接访问Model的,并且还不可避免的会有些逻辑处理。这点通过两张图可以很好的体现

图一:MVC模式

《我眼中的MVP》 MVC模式

图二:MVP模式

《我眼中的MVP》 MVP模式

图片来自http://www.360doc.com/content/10/0225/18/867320_16805936.shtml

3、MVP是如何解决MVC的问题的呢

在MVP模式中出现了Presenter,它完全的将View和Model进行了分离,Presenter是用于处理程序逻辑的从而MVP可以将Activity归类于View之中。Presenter与View并不是直接连接的而是通过接口的方式来实现的,这点通过代码就可以体现。

4、MVP模式的优缺点

优点:View与Model完全分离,有效降低的耦合度,并且更加方便测试。

缺点:代码量增多了这是一个不可避免的问题,不过换来的是项目结构更加清晰。

下面是我自己参考别人代码写的一个例子,其中包含了一些Retrofit的东西

奉上源码 RetrofitDemo

    原文作者:grr1314
    原文地址: https://www.jianshu.com/p/1b6b1e73afb6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞