关于MVP的一些简单了解

一:MVP的认知:

m : model 模型(数据)

v : view 视图(显示)

c : control 控制(逻辑)

p: persenter 表示业务,接显示和模型处理数据也视图的关系

步骤:1.activity中创建persenter对象,实现view接口,向persenter下达操作命令
2.persenter类继承persenter接口实现类(实现类主要处理一些基本逻辑),创建model对象,传入自身实例,调用model中的逻辑方法
3.model则实现读取本地数据库相关的操作,操作中通过persenter向view更新进度。

这里写图片描述

扩展:MVC与MVP

这里写图片描述

区别:MVC中是允许Model和View进行交互的,而MVP中很明显,Model与View之间的交互由Presenter完成。还有一点就是Presenter与View之间的交互是通过接口的。

二:代码

Model 层
1 、状态以及数据返回的定义
public interface IModelCallback {
/**
* 开始
*/
void onStart();
/**
* 处理成功
* @param data
*/
void onSuccess(String data);
/**
* 处理失败
* @param msg
*/
void onFail(String msg);
/**
* 处理出现异常
*/
void onError();
/**
* 处理完毕
*/
void onComplete();
}
2 、具体的数据加载
/**
* 数据处理类
*/
public class MyModel1 {
private Handler m = new Handler();
public void loadData(final int par,final IModelCallback callback){
callback.onStart();
new Thread(){
@Override
public void run() {
try {
Thread.sleep(1000);
if(par < 0){
m.post(new Runnable() {
@Override
public void run() {
callback.onFail(” 参数非法错误 “);
}
});
}else {
final String data = ” 加载了 ” + par + ” 条数据 “;
m.post(new Runnable() {
@Override
public void run() {
callback.onSuccess(data);
}
});
}
} catch (InterruptedException e) {
e.printStackTrace();
m.post(new Runnable() {
@Override
public void run() {
callback.onError();
}
});
}
m.post(new Runnable() {
@Override
public void run() {
callback.onComplete();
}
});
}
}.start();
}
}
view 层
1 、结合数据加载情况处理页面效果
public interface IView {
/**
* 显示加载框
*/
void showLoadingDialog();
/**
* 显示数据结果
* @param data
*/
void showResult(String data);
/**
* 显示加载失败的提醒
* @param msg
*/
void showFailMsg(String msg);
/**
* 显示加载异常的提醒
*/
void showErrorMsg();
/**
* 隐藏加载框
*/
void hideLoadingDialog();
}
Persenter 层
承上启下
public class MyPersenter1 {
private IView iView;
public MyPersenter1(IView iView) {
this.iView = iView;
}
public void getData(int par) {
MyModel1 model1 = new MyModel1();
model1.loadData(par, new IModelCallback() {
@Override
public void onStart() {
iView.showLoadingDialog();
}
@Override
public void onSuccess(String data) {
iView.showResult(data);
}
@Override
public void onFail(String msg) {
iView.showFailMsg(msg);
}
@Override
public void onError() {
iView.showErrorMsg();
}
@Override
public void onComplete() {
iView.hideLoadingDialog();
}
});
}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值