Android MVP模式规范
概述
统一MVP模式代码规范(该规范基于google推荐的mvp模式)
契约类
契约类主要是为了减少类泛滥问题,契约类命名要求是功能可描述,里面包含View声明和Presenter抽象声明,类名必须是View和Presenter
/**
* MVP模式,契约类,用于接口统一管理,业务逻辑清晰
* 订单结算页契约类
*/
public interface PersonContract {
interface View extends BaseView {
/**
* 正在加载
*/
void onLoading();
/**
* 加载成功
*/
void onLoadSuccess();
/**
* 加载失败
*/
void onLoadFailed();
}
abstract class Presenter extends BasePresenter<View> {
public Presenter(View view) {
super(view);
}
/**
* 请求接口
*/
public abstract void loadData(String url);
}
}
Presenter业务类
1、 mView在使用前必须做判空操作,强制要求。
2、 Presenter不允许传入Context或者做UI相关代码操作。
/**
* 业务Presenter
*/
public class PersonPresenter extends PersonContract.Presenter {
private static final String TAG = "PersonPresenter";
public BillPresenter(View view) {
super(view);
}
/**
* 请求接口
*/
@Override
public void loadData(String url) {
if (mView != null) {
}
}
}
UI层
在onDestroy()的生命周期里面必须调用mPresenter.destroy()方法,强制要求。
public class PersonActivity implements PersonContract.View {
private static final String URL = "http://www.baidu.com";
private PersonPresenter mPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPresenter = new PersonPresenter(this);
setContentView(R.layout.persion_layout);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onLoading() {
}
@Override
public void onLoadSuccess() {
}
@Override
public void onLoadFailed() {
}
}