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模式
图片来自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