MVP模式初识
Model层:数据,请求数据的逻辑。
View层:Activity或者Fragment,直接与用户交互和显示数据。
Presenter层:中间层,实现Module层和View层的解耦。
MVP常有,使用不常用。之前项目中有用到,最近又接触到,索性抽取了基本模型出来,下面是简单的代码体现。
/*
View 层。
1.Activity或者Fragment来实现定义好的V_INTERFACE
2.声明P_INTERFACE接口,new实现类presenter,并查询数据
3.处理查询成功或失败的逻辑
*/
interface V_INTERFACE {
void onFailure();
void onSuccess(Object obj);
}
class YourActivity implements V_INTERFACE {
//声明P_INTERFACE接口,new实现类
P_INTERFACE presenter = new P_IMPL(this);
//利用presenter查询数据
protected void onCreate(Bundle savedInstanceState) {
presenter.query(89757, "username");
}
public void onFailure() {
//查询失败的逻辑
}
public void onSuccess(Object obj) {
//请求成功拿到数据后的逻辑
//显示到组件上
}
}
/**
* Presenter层。
* 1.声明V_INTERFACE,在构造方法中拿到其实现类也就是Activity的引用
* 2.声明M_INTERFACE,new其实现类module,在自己的查询方法中利用module查询数据
* 3.处理回调。成功后调用view的onSuccess,失败onFailure
*/
interface P_INTERFACE {
void query(Object... args);
}
class P_IMPL implements P_INTERFACE, M_INTERFACE.M_LISTENER {
V_INTERFACE view;
M_INTERFACE module;
//构造方法接收V_INTERFACE
public P_IMPL(V_INTERFACE view) {
this.view = view;
module = new M_IMPL();
}
@Override
public void query(Object... args) {
//查询,传入需要请求的参数
module.query(this, 89757, "username");
}
@Override
public void onSuccess(Object obj) {
view.onSuccess("200_OK");
}
@Override
public void onFailure() {
view.onFailure();
}
}
/**
* Module层。
* 1.定义回调接口,传入query方法中
* 2.实现类query方法中去请求数据,
* 3.成功调用接口的onSuccess,失败onFailure
*/
interface M_INTERFACE {
void query(M_LISTENER listener, Object... args);
//监听的回调接口
interface M_LISTENER {
void onSuccess(Object obj);
void onFailure();
}
}
class M_IMPL implements M_INTERFACE {
@Override
public void query(M_LISTENER listener, Object... args) {
boolean result = false;
//真正处理请求数据的逻辑
if (result) {//请求成功
listener.onSuccess("200_OK");
} else {
listener.onFailure();
}
}
}