0.介绍
接触MVP已经很久了,在上一家公司也有用到过。但是今年换完公司以后,看到这家公司的代码,真的是要疯掉的感觉。基本上全部都是一个activity搞定全部逻辑,加上冗余的封装,很难去维护的一个项目。所以就准备了一下,给几个Android的同事分享一下我使用MVP的心得。
1.MVC与MVP的区别
1.MVC
首先说一下MVC。在我看来,我们可以把原有的写法,也就是Android最原始的写法,一个activity+XML+Bean,看做是最简单意义上的MVC。当然,我们也可以延伸一下,认为网络请求或者说其他的复杂数据操作当做bean。也就是activity+XML+(Bean+Logic),看做是一个MVC。
在这样的架构当中,xml做为View来进行操作,会发现他的能力很弱,并不能做太多的事情,需要activity来进行辅助操作。所以我更倾向于把activity理解为V和C的集合来看待。
由于这些原因,我们的项目中都难以避免的出现了,activity太过于臃肿,从而导致的代码难以阅读,难以维护现象的产生。在这个基础上演化出来的MVVM框架,我认为能力依然非常的弱,只是加强了XML做为一个View的功能,本质上还是一个MVC。(我们这里讲的MVVM只指以dataBinding实现的MVVM)
2.MVP
MVP是指Model+Presenter+View的实现方式。在这里,activity只作为View来进行操作。也就是(Bean+Logic)+Presenter+(activity+xml)的实现方式。
让数据和View真正的分离,降低了耦合性。同时,弱化了activity的作用,让activity真正的作为一个View的单一功能来进行操作。
当然,MVP也是从MVC的基础上演化而来的。初期开始感觉写起来会有一些不适应,或者说有一些麻烦。但慢慢的,我感觉离不开他了。通过MVP,能够推进项目内成员的代码规范性,以及各个方法之间的条理性。从而使整个项目更加方便维护。