android项目框架MVP

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层的关联




猜你喜欢

转载自blog.csdn.net/H291850336/article/details/58600912