##Mvp模式简介
衍生于MVC 模式,降低了耦合性,避免了View(Activity/Fragment)承担了所有的责任,
分担了UI层的职责。
在MVP模式里通常包含4个要素:
- View:负责绘制UI元素、与用户进行交互(在Android中体现为Activity);
- View interface:需要View实现的接口,View通过View interface与Presenter进行交互,降低耦合,方便进行单元测试;
- Model:负责存储、检索、操纵数据(有时也实现一个Model interface用来降低耦合);
- Presenter:作为View与Model交互的中间纽带,处理与用户交互的负责逻辑。
为什么要使用 MVP模式
在Android开发中,Activity并不是一个标准的MVC模式中的Controller,它的首要职责是加载应用的布局和初始化用户界面,
并接受并处理来自用户的操作请求,进而作出响应。随着界面及其逻辑的复杂度不断提升,Activity类的 职责不断增加,
以致变得庞大臃肿。当我们将其中复杂的逻辑处理移至另外的一个类(Presneter)中时,Activity其实就是MVP模式中 View,
它负责UI元素的初始化,建立UI元素与Presenter的关联(Listener之类),同时自己也会处理一些简单的逻辑(复杂的逻辑交由
Presenter处理).
在实际的开发过程中,往往需求和界面是不确定的,随着开发的不断推进,原来的很多界面基本修改得面目全非,这是许多开发者面临
的一个非常头疼的问题,MVP在一定程度上了解决了这个问题。
##MVP 实战
(0)UserBean
1 |
|
(1)IUserModel 用户登录model接口
需要实现其接口,一般是读取网络数据,并存在JavaBean 中,并对javabean 有set和get的读写权限。
一般为了需要一个Listerner 来监听网络请求读写数据的情况。
1 | public interface IUserModel { |
(2)IUserLoginView 用户登录view 接口
根据需求,VIEw 需要对Model的bean数据进行操作,当登录成功,返回登录人信息情况。
1 | public interface IUserLoginView extends IUserView { |
(3)IUserModel监听类
Model联网成功后,根据返回情况进行监听,它也起到了传递数据的作用,它将Model的数据传递给
Presenter ,从而Presenter 来讲数据传递给view
1 |
|
(4)UserPresenter
连接model 层和 view层,处理model和view进行交互。
1 | public class UserPresenter { |
(5)View 实现层
1 | public class MainActivity extends Activity implements IUserLoginView{ |
代码并不难,希望通过我这个例子,一是巩固自己的学习和理解,二是希望更多的人更好的学习,我会再接再厉,写
更多的博文。