首页 > 系统 > Android > 正文

android项目框架MVP

2019-11-06 09:34:54
字体:
来源:转载
供稿:网友

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){    }}//Activitypublic 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层的关联


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表