MVP 디자인 모델 개인 이해
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 이상 의 코드 는 수첩 에 쓰 여 있 는데 대체적으로 이런 뜻 이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.