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层的关联
新闻热点
疑难解答