前言
MVP是根據(jù)MVC演變而來,類似的設計模式還有MVVC(model,view,viewmodel) . 暫時未分清楚MVC與MVP的區(qū)別.也沒有找到嚴謹?shù)腗VP的定義.根據(jù)網上的資料以及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);
//設置關注狀態(tài)
void setFollow(boolean follow);
void setLike(boolean like);
-
View
Android 中Acitivity或者Fragment實現(xiàn)IView接口亏镰,扮演View角色
public class VideoPlayerActivity extends BaseActivity implements View.OnClickListener,IVideoPlayerView
在onCreate()函數(shù)中初始化presenter,并且加載數(shù)據(jù)
presenter = new VideoPlayerPresenter(this,client);
presenter.loadData();
-
Presenter
Presenter中完成數(shù)據(jù)的加載以及邏輯的處理,在構建函數(shù)中保存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主要進行獲取、保存逼肯、修改數(shù)據(jù)等功能,可以定義全局的DataManager進行封裝篮幢。如果數(shù)據(jù)結構簡單,也可以省略Model實現(xiàn)缺菌,直接在Presenter中進行數(shù)據(jù)操作搜锰。
總結
這樣實現(xiàn)MVP未必“規(guī)范” 男翰, 但是任何設計都是為了解決問題纽乱。該方式可以將業(yè)務昆箕、數(shù)據(jù)、UI進行解耦鹏倘,程序結構清晰,方便測試骆姐。即可滿足現(xiàn)階段需求。
當日后程序更為龐大玻褪,業(yè)務更為復雜, 再使用其他方式進行重構带射。