MVP

---------------------------------------
Android開發架構------MVP


MVC
  View 視圖層
  Controller  控制器
  Model 模型層

  
MVP
  View 視圖層
  Presenter  主導器
  Model 模型層

View層

IUserView{
  void showSuccess();
  void showError();
}

Activity implements IUserView{
  doClick(View view){
    R.id.b1:         
      UserPresenter pre = new UserPresenterImpl(this);
      pre.regist(zs,1234);
    break;
  }
  
  showSuccess(){ Toast.(成功) }
  showFail(){ Toast.(失敗) }

}



Presenter層

IUserPresenter{
  regist(name, pwd);
}

UserPresenterImpl{
  IUserView view;

  public UserPresenterImpl(IUserView view){
    this.view = view;
  }  

  void regist(name, pwd){
    UserModel model = new UserModelImpl();
    success=model.regist(zs,1234);
    if(success){
      view.showSuccess()
    }else{
      view.showError()
    }
  }
}



模型層

IUserModel{
  boolean regist(name , pwd);
}

UserModel implements IUserModel{
  bolean regist(String name, String pwd){
    執行註冊業務
    return true;
  }
}


友錄分包結構:
com.tarena.youlu 
  activity  		存放activity
  view   		存放view層接口
  model			存放model層接口
  model.impl		存放view層實現類
  presenter		存放presenter層接口
  presenter.impl  	存放presenter層實現
  fragment		fragment  
  util			工具類
  adapter		適配器



MVP聯繫人列表業務分析

View層:

IContactView{
  void setContactList(List<Contact> list);
  void showData();  
}

ContactFragment implements IContactView{
  onCreateView(){
    調用presenter的方法,加載所有聯繫人
    
  }
  void setContactList(List<Contact> list);
  void showData();  
}


presenter層
IContactPresenter{
  void loadAllContacts();
}

ContactPresenterImpl impl xxxx{
  void loadAllContacts(){
    調用model層的方法加載所有聯繫人
    presenter = new ContactPresenter();
    presenter.loadAllContacts(new Callback(){
       onContactsLoaded(List contact){
          集合查詢完畢後執行
          更新view
       }
    });
  }  
}

Model層
IContactModel{
  List<Contact> loadAllContact();
}

ContactModelImpl impl  xxxxx{

  List<Contact> loadAllContact(Callback callback){
    工作線程中查詢數據庫 
    new AsyncTask(){
      onPostExecute(){
         調用回調方法  讓presenter做後續操作
         callback.onContactsLoaded(contacts); 
      }
    } 
  }
}


interface Callback{
  onContactsLoaded(List contact);
}

發佈了6 篇原創文章 · 獲贊 2 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章