初识MVP架构
一、MVC的优缺点
首先,在说MVP之前要说一下MVC,MVC顾名思义:
- Model:业务逻辑和实体模型
- View:对应于布局文件
- Controllor:对应于Activity
看起来的确像那么回事,但是细细的想想这个View对应于布局文件,其实能做的事情特别少,实际上关于该布局文件中的数据绑定的操作,事件处理的代码都在Activity中,造成了Activity既像View又像Controller。因为MVC架构的简单无脑,在很多程序员眼中还是很好用的。但由于大量的操作都放在Activity内,导致一个Activity内冗余了大量的代码,非常不方便阅读,于是就有了MVC架构的进化版–MVP,我们这篇文章是为了介绍MVP,所以MVC就说到这里。
二、MVP的架构分析
首先,我们同样的来看一下MVP分别的作用:
Model:
1、负责业务逻辑和实体模型
2、负责数据的加工处理,如:数据的解析、存储、分发、以及增删改查、
意思就是凡是涉及到数据操作的都是在model进行的。
所以model不仅仅只是实体类的集合,同时还是包含关于数据的各种处理操作。View:
1、用户交互和视图显示,在android中对应activity,说白了就是用户看到的界面
2、一个view可以有多个presenter,也可以有一个presenterPresenter:
1、承上启下:首先,presenter是介于model层和view层之间的,presenter会把view交给自己的命令进行一定的校验等操作再交给model层处理,并且会把model层的处理结果返回给view层
2、封装业务:一些业务逻辑也属于presenter层
3、刷新view:presener会根据获取的数据成功与否来通知view是应该显示成功还是失败
4、ui线程与普通线程之间的线程切换
其次,我们来看一下MVP的架构大概是怎样的:
最后,附上一个MVP框架的示例demo:https://github.com/LinhaiGu/MVPDemo
MVP架构的优缺点:
mvp架构的使用大大减少了Activity的职责,简化了Activity中的代码,将复杂的逻辑代码提取到了Presenter中进行处理。与之对应的好处就是,耦合度更低,更方便的进行测试。但另一方面,由于presenter层的引入,会不可避免的导致类的数量的增加,对于使用不熟练的开发人员会降低开发速度
(此图片和demo出自文章:http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2015/0227/2503.html)
参考资料:
http://blog.youkuaiyun.com/lmj623565791/article/details/46596109
http://blog.youkuaiyun.com/hai_qing_xu_kong/article/details/51745798