MVP 디자인 모델 개인 이해

5397 단어
MVP:Module  View   Presenter。
Module  : 네트워크 요청 이나 제출 등 주요 업무 논리의 실현 을 책임 집 니 다.
View: xml 및 사용자 정의 view, 사용자 와 상호작용 하 는 인터페이스.그러나 MVP 모드 에서 View 는 Model 과 전혀 관련 이 없어 Model 의 데 이 터 를 직접 가 져 올 수 없습니다.
Presenter: View 와 Module 의 상호작용 을 담당 하고 이들 의 대상 을 얻 으 며 실현 방법 을 설정 합 니 다. 그 때 presenter 의 대상 을 얻 고 처리 하고 자 하 는 방법 을 호출 합 니 다.방법 내 에서 Module 의 방법 을 호출 할 것 입 니 다.인터페이스 리 셋 설정 가능,
Module 방법 파라미터 에 감청 을 하나 더 설정 하고 논 리 를 처리 하 며 재 작성 방법 후 View 논 리 를 처리 합 니 다.
예:
P 층 + V 층 (공식 구현 방식)
interface Constract{
        interface BaseView{
            view    
        }
        
        interface BasePresenter{
                
             : ui                   
        }
}

view 에 대한 처 리 를 view 에 두 고 다른 작업 은 presenter 층 에 두 십시오.Base 를 추출 하여 아래로 뻗 을 수 있 습 니 다.범 형 으로 실현 하 다.인터페이스 리 셋 을 설정 하고 대응 하 는 하위 클래스 나 실현 클래스 의 처리 논 리 를 실행 합 니 다.
  :
   :
Module:
/**
 * Module :    model          ,          ,      
 */
public interface IUser{
    //Module        ,    
    void login(String name,String age,OnLoginListener listener);
}
   // IUser     ,IUserImpl      。       。OnLoginListener     ,view   ,        
public class IUserImpl implements IUser{
    @override
    public void login(String name,String age,OnLoginListener listener){
        //      
        if(name!=null&&age!=null&&!name.isEmpty()&&name.equels(age)){
              log.d(TAG,"  ")
              listener.success();
        }else{
              listener.fail();
        }
    } 
}


/**
 *OnLoginListener listener : Module          。               。                , P   
 */
public abstract class OnLoginListener{
   abstract void success();
    
   abstract void fail()
}



View:
/**
    View  UI  ,  UI        UI
    Activity      ,    。
*/
public interface MView{
    String getName();
    
    String getAge();
}

public class MainActivity implements MView{
    Presenters p;
    onCreate(){
        MView mView;
        IUserImpl iUser;
        p = new Presenters(mView,iUser);
        p.login();
    }
    
    @override
    public String getName(){
    return "";
    };
    @override
    public String getAge(){
     return "";
    };
}



Presenter:
/*
            presenter。     Module,     presenter,    presenterImpl(    )     
*/
public class Presenters{
    MView mView;
    IUserImpl iUser;
    public Presenters(MView mView,IUserImpl iUser){
        this.mView = mView;
        this.iUser = iUser;
    }
    
    /*
              ,Activity        ,     。          。  
    */
    public login(){
        iUser.login(mView.getName,mView.getAge,new OnLoginListener(){
                    @override
                    void success(){
                        //          
                    }
                    @override
                    void fail(){
                    
                    }
         });
    }
}




   :
Module:
/**
    Module :    model          ,          ,      
    
         ,    
*/
public interface IUser{
    //Module        ,    
    void login(String name,String age,OnLoginListener listener);
}
   // IUser     ,IUserImpl      。       。OnLoginListener     ,view   ,        
public class IUserImpl implements IUser{
    @override
    public void login(String name,String age,OnLoginListener listener){
        //      
        if(name!=null&&age!=null&&!name.isEmpty()&&name.equels(age)){
              log.d(TAG,"  ")
              listener.success();
        }else{
              listener.fail();
        }
    } 
}


/**
 *OnLoginListener listener : Module          。               。                , P   
 */
public abstract class OnLoginListener{
   abstract void success();
    
   abstract void fail()
}


Presenter+View   Constract:


/**
View   Presenter           Constract 
  BaseConstract
*/
public interface BaseConstract{
    interface BaseView{
        String getName();
    
        String getAge();
    }
    
    interface BasePresenters{
         void attachView();
        
         void login();
    }
}



Presenter:
public abstract class BasePresenters implements BaseConstract.BasePresenters{
        public T mView =null;//     ,      ,  BaseView     view
                                          
       @override
       public void attachView(T view){
            this.mView = view;       
       }     
}
                                     
 public class DemoPresenter extend BasePresenters(){
       IUserImpl iuser;
       public DemoPresenter( IUserImpl iuser){
           this.iuser = iuser;
       }                              
                 
                                     
       @override
       public void login(){
            //    
            iuser.login(mView.getName(),mView.getAge(),new OnLoginListener listener(){
                    @override
                    void success(){
                        //          
                    }
                    @override
                    void fail(){
                    
                    }                                
            })
       }
 }



4. 567913 이상 의 코드 는 수첩 에 쓰 여 있 는데 대체적으로 이런 뜻 이다.

좋은 웹페이지 즐겨찾기