mvp模式可以很好的帮助我们解耦,充分的把事件和UI分开,这样的好处是当我们的UI由于各种讨厌的理由被改啊改啊,但是我们实现功能的地方都不用再去改动,只要新UI去实现就好了,下面开始非常简单的mvp
mvp 重要的类
1:IXXView xx表示你自己界面的名字 I 代表这是个接口
2:IXXPresente 同样的道理
3:Presenter 具体业务的实现者
4:View IXXView 的实现者就是你的activity fragment等等UI页面
5: Model 承载具体的数据,负责两者间的数据关联。
具体实现:
IPresenter
public interface IPresenter { void getContent(); }
IView
public interface IView { void showContent(Model model); }Modelpublic class Model { private String Content; public Model(String content) { Content = content; } public String getContent() { return Content; } public void setContent(String content) { Content = content; } }Presenterpublic class Presenter implements IPresenter{ IView iView; public Presenter(IView iView) { this.iView = iView; } @Override public void getContent() { // ...通过网络请求啦,多线程啦要做些事去拿到content内容然后将内容包裹在Model中,这里模拟的new一个。 Model model = new Model("你好");//model其实就是你网络请求回来用Gson得到的类 iView.showContent(model); } }Viewpublic class View extends Activity implements IView{ Presenter mPresentr; @Override public void onCreate(@Nullable Bundle savedInstanceState, @Nullable PersistableBundle persistentState) { super.onCreate(savedInstanceState, persistentState); mPresentr= new Presenter(this); mPresentr.getContent();//在你想获取内容的地方让presenter去获取内容。 } @Override public void showContent(Model model) { //通过presenter不懈的努力终于拿到了内容并封装在model里了,这里就可以拿着model猥琐欲为了(界面随便变反正数据就在那里,不用再去改了) } }主要是mPresentr= new Presenter(this);这句话其实实例了两个接口对象,一个是presenter另一个就是IView因为View实现了IView所以View其实就是IView的一个实例在Presenter中给IView赋值。this.iView = iView;好了,当然这只是个很简单的MVP模式实例,可以简单的实现界面解耦。但是使用MVP会带来类很多的问题,除非一个界面复杂而且内容多变否则建议还是用MVC。