Android MVP 个人实现

前言

MVP是根据MVC演变而来,类似的设计模式还有MVVC(model,view,viewmodel) . 暂时未分清楚MVC与MVP的区别.也没有找到严谨的MVP的定义.根据网上的资料以及Goggle的demo,自己定义进行了MVP设计,用来解决Activity过于庞大的问题。

MVP设计

首先定义三个部分 Model,View,Presenter.
View ,Presenter 各自定义接口,IView IPresenter.

public interface IVideoPlayerPresenter {   
 public void loadData();  
  //点击关注   
 public void clickFollow(); 
 //点击喜欢   
 public void clickLike();   
}
public interface IVideoPlayerView {   
 void bindData(VideoPlayerPageEntity entity);   
 void showLoading(boolean show);   
 //设置关注状态   
 void setFollow(boolean follow);   
 void setLike(boolean like);
  • View

Android 中Acitivity或者Fragment实现IView接口,扮演View角色

public class VideoPlayerActivity extends BaseActivity implements View.OnClickListener,IVideoPlayerView 

在onCreate()函数中初始化presenter,并且加载数据

presenter = new VideoPlayerPresenter(this,client);
presenter.loadData();
  • Presenter

Presenter中完成数据的加载以及逻辑的处理,在构建函数中保存IView引用,用来与View交互

public class VideoPlayerPresenter implements IVideoPlayerPresenter{
  public VideoPlayerPresenter(IVideoPlayerView videoPlayerView ) {
     this.videoPlayerView = videoPlayerView;   
  }
  @Override
  public void loadData() {   
    videoPlayerView.showLoading(true);   
    DataManager.getData(url);
 }
  • Model

Model主要进行获取、保存、修改数据等功能,可以定义全局的DataManager进行封装。如果数据结构简单,也可以省略Model实现,直接在Presenter中进行数据操作。

总结

这样实现MVP未必“规范” , 但是任何设计都是为了解决问题。该方式可以将业务、数据、UI进行解耦,程序结构清晰,方便测试。即可满足现阶段需求。
当日后程序更为庞大,业务更为复杂, 再使用其他方式进行重构。

你可能感兴趣的:(Android MVP 个人实现)