您的位置:首页 > 移动开发 > Android开发

浅谈Android Mvp模式开发及个人理解

2018-07-18 23:01 78 查看

MVP:Model View Present。

前言:抱着最起码的要求尽力去做好每一件事 ——秋不白

终于理解了MVP,给大伙分享下,大神勿喷,小白专用。第一次写博客好紧张,怎么样才能表现出经常写博客的样子,各位老铁。

[code]* Model: 处理数据
* View : 显示数据(Activity或Fragment)
* Present: 连接Model层和View层
[code]* Mvp 框架个人理解
*  1. 由View层发起请求(就是在View层里面 调用present.getData() 方法啦,说的这么高端)
*  2. 在present.getData()方法里面,调用Model.getData()去执行数据请求,(就是所谓的  由Present层传递请求给Model层)
*  3. 然后,present回传请求数据结果(成功就显示数据,失败就提示失败)

下面直接看代码

第一步,创建一个接口,具备两个功能,一个是请求数据,一个是回传数据

[code]/**
* 回调接口
* Created by yinsxi on 2018/7/18.
*/

public interface MvpContact {
interface Present{
/**
* 获取数据
*/
void getData();
}
interface View{
/**
* 展示数据
*/
void showData();

/**
* 展示错误数据
*/
void showError();
}
}

第二步

还是一个接口,用来请求数据时,失败或成功的回调

[code]/**
* 请求数据 回调
* Created by yinsxi on 2018/7/18.
*/

public interface GetDataListenser {
void onFailed();
void onSuccess();
}

第三步

编写你的数据请求类,也就是Model层,处理数据的

[code]/**
* Created by yinsxi on 2018/7/18.
*/

public class MvpModel {
public void getData(GetDataListenser listenser){

/**
* 具体执行业务代码
* 此处省略一百行代码
* */

/**
* 根据最后请求结果
* 失败或成功回调
*/
listenser.onFailed();
listenser.onSuccess();

}
}

第四步

编写Present层,用来传递请求数据,和回传数据

[code]/**
* Mvp 中的 Present层, 连接View层和Model层
* 1. 传递数据请求
* 2. 回传 数据请求结果及数据
* Created by yinsxi on 2018/7/18.
*/

public class MvpPresent implements MvpContact.Present{
MvpContact.View view;
MvpModel model;
public MvpPresent(MvpContact.View view) {
this.view = view;
model = new MvpModel();
}

/**
* 中间层传递请求
*/
@Override
public void getData() {
model.getData(new GetDataListenser() {
@Override
public void onFailed() {
view.showError();
}

@Override
public void onSuccess() {
view.showData();
}
});
}
}

到这里基本完成简易MVP框架了,看看Activity如何使用,相信你应该知道了

[code]public class MainActivity extends AppCompatActivity implements MvpContact.View{

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//初始化 Mvp 中的Present层
MvpPresent mvpPresent = new MvpPresent(this);
//由View层发起请求
mvpPresent.getData();
}

@Override
public void showData() {

}

@Override
public void showError() {

}
}

最后仅个人理解,可能存在失误:

[code]*     不必太过于在意是什么框架mvp mvc,框架再怎么变,也离不开,最根本的设计,就是封装。
*      一个数据请求当然是放到单独一个类里面去执行,作为activty只需要这个类回传结果,失败或成功。
*      当然了,遵循框架,有利于后期维护,一句话,写出机器能懂得代码很简单,写出人能看懂的代码就很难,这是我兄dei佑哥对我说的
*      这要是衍生出各种框架的原因。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: