MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
优点:
1、模型与视图完全分离,我们可以修改视图而不影响模型
2、可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部
3、我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
缺点:
由于对视图的渲染放在了Presenter中,所以视图和Presenter的交互会过于频繁,一旦视图需要变更,那么Presenter也需要变更了
基本使用:
//P层接口定义
public interface ATPresenter<V> {
void attachView(V view);
void detachView();
}
public interface DetailActView {
void setInfoView(DataModel data);
}
//具体业务逻辑实现(DetailActView为接口实现与activity交互)
public class DetailActPresenter implements ATPresenter<DetailActView> {
public static final String tag = ATFlightOrderDetailActPresenter.class.getName();
private DetailActView mView;
private Subscription subscription;
@Override
public void attachView(ATFlightOrderDetailActView view) {
this.mView = view;
}
@Override
public void detachView() {
this.mView = null;
}
//请求网络实现获取数据
public void requestDataFromNet(RequestModel) {
}
//更新UI
public void updataUI(DataModel data){
}
}
//Activity
public class ATFDetailActivity implements ATFlightOrderDetailActView{
private ATDetailActPresenter detailActPresenter;
@Override
protected void onCreate(Bundle savedInstanceState) {
detailActPresenter.requestDataFromNet(RequestModel);
}
@Override
public void setInfoView(DataModel data){
detailActPresenter.updataUI(data);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (detailActPresenter != null) {
detailActPresenter.detachView();
}
}
}
在MVP中得p层处理打大部分代码逻辑包括UI显示和请求网络以及model层的关联