독서 노트 (26)
1. MVP 소개
MVP 모드 는 MVC 모드 의 진화 버 전 으로 MVP 는 모두 Model - View - Presenter 라 고 부른다.현재 MVP 는 안 드 로 이 드 애플 리 케 이 션 개발 에서 갈수 록 중요 해 지고 있다.
안 드 로 이 드 에 서 는 비 즈 니스 논리 와 데이터 액세스 가 밀접 하 게 결합 되 어 있 으 며, 경험 이 부족 한 개발 자 들 은 다양한 비 즈 니스 논 리 를 Activity, Fragment 또는 사용자 정의 View 에 넣 을 수 있 으 며, 이러한 구성 요소 들 의 단일 유형 을 비대 하 게 만 들 수 있 습 니 다.구체 적 인 업무 논 리 를 빼 지 않 으 면 UI 가 변화 할 때 원래 의 View 에서 구체 적 인 업무 논 리 를 빼 야 한다. 이것 은 반드시 번 거 롭 고 실 수 를 하기 쉽다.
2. MVP 사용 의 장점
(1) MVP 모드 는 View 와 Model 의 결합 을 해제 하고 View 의 복잡성 을 효과적으로 낮 춘 다.또한 양호 한 확장 성, 테스트 가능성 을 가 져 와 시스템 의 청결 성과 유연성 을 확보 했다.
(2) MVP 모드 는 디 스 플레이 층 과 논리 층 을 분리 하여 인터페이스 로 통신 하여 결합 을 낮 출 수 있다.이상 화 된 MVP 모델 은 같은 논리 코드 와 서로 다른 디 스 플레이 인터페이스 를 조합 할 수 있다. 왜냐하면 그들 은 구체 적 인 것 에 의존 하지 않 고 추상 적 인 것 에 의존 하기 때문이다.이로써 Presenter 는 View 논리 인 터 페 이 스 를 실현 한 모든 UI 에 활용 하여 더욱 광범 위 한 적용 성 을 가지 고 유연성 을 확보 할 수 있다.
3. MVP 모드 의 세 가지 역할
(1)
Presenter
- 상호작용 중개인: Presenter
은 주로 의사 소통 View
과 Model
의 다리 로 서 Model
층 에서 데 이 터 를 검색 한 후에 View
층 으로 돌아 가 View
와 Model
간 의 결합 이 없고 업무 논 리 를 View
역할 에서 분리 시킨다.(2)
View
– 사용자 인터페이스: View
는 보통 Activity
, Fragment
또는 특정한 View
컨트롤 을 말 하 는데 하나의 Presenter
구성원 변 수 를 포함한다.보통 View
논리 인 터 페 이 스 를 실현 하고 View
의 조작 을 Presenter
에 전달 하여 실현 해 야 한다. 마지막 으로 Presenter
논리 인 터 페 이 스 를 호출 하여 결 과 를 View
요소 에 되 돌려 준다.(3)
View
– 데이터 액세스: Model
역할 은 주로 데 이 터 를 제공 하 는 액세스 기능 이다.Model
모델 층 을 통 해 데 이 터 를 저장 하고 가 져 와 야 한다. Presenter
마치 데이터 창고 와 같다.더 솔직히 말 하면 Model
은 데이터베이스 DAO 나 네트워크 에서 데 이 터 를 얻 는 역할 을 봉인 하거나 두 가지 데이터 방식 으로 얻 은 집합 이다.4. MVC, MVVM 과 의 차이
1. MVC 와 의 차이
위의 그림 에서 알 수 있 듯 이 MVC 의 결합 성 이 비교적 높 고 View 는 Model 에 직접 방문 할 수 있어 서 3 자 간 에 회 로 를 구성 했다.그래서 이들 의 주요 차이 점 은 MVP 에서 View 가 Model 에 직접 접근 할 수 없고 Presenter 를 통 해 요청 을 해 야 하 며 View 와 Model 은 직접 통신 할 수 없다 는 것 이다.
2. MVVM (Model - View - View Model) 과 의 차이
MVVM 은 MVP 와 매우 비슷 하 며 유일한 차이 점 은 View 와 Model 이 양 방향 으로 연결 되 고 둘 사이 에 한 쪽 이 변화 하면 다른 쪽 에 반응 한 다 는 것 이다.MVVM 모드 는 ListView 와 Adapter, 데이터 세트 와 의 관계 가 있 습 니 다. 데이터 세트 가 변화 할 때 Adapter 의 notifyDataSetChanged 를 호출 한 후에 View 는 직접 업데이트 되 고 이들 사이 에 결합 이 없어 ListView 를 더욱 유연 하 게 만 듭 니 다.
5. MVP 단순 구현
참고 가능:
1. androidmvp
2. archi
6. MVP 와 Activity, Fragment 의 생명주기
Model
상 시적 보유 Presenter
의 강 한 인용 으로 일부 요청 이 끝나 기 전에 Activity
소각 되면 Activity
대상 을 계속 보유 Presenter
해 Activity
대상 을 회수 할 수 없 게 되면 이때 메모리 유출 이 발생 한다.그러면 해결책 은 약 한 인용 과 Activity, Fragment 의 생명주기 로 이 문 제 를 해결 하 는 것 이다.먼저 하나의
Activity
추상 을 구축한다.public abstract class BasePresenter<T> {
protected Reference<T> mViewRef; //View
public void attachView(T view){
mViewRef = new WeakReference<T>(view); //
}
protected T getView(){
return mViewRef.get(); // View
}
public boolean isViewAttached(){
return mViewRef != null && mViewRef.get() != null; // View
}
public void detachView(){
if(mViewRef != null){
mViewRef.clear(); //
mViewRef = null;
}
}
}
보통 이
Presenter
유형 은 특정한 인 터 페 이 스 를 실현 한 View
또는 Activity
등 유형 일 것 이다.Fragment
기본 클래스 를 만 들 고 이 기본 클래스 성명 주기 함 수 를 통 해 MVPBaseActivity
와 의 관 계 를 제어 합 니 다.코드 는 다음 과 같 습 니 다:public abstract class MVPBaseActivity<V, T extends BasePresenter<V>> extends Activity {
protected T mPresenter; //Presenter
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mPresenter = createPresenter();
mPresenter.attachView((V)this);
}
@Override
protected void onDestroy() {
super.onDestroy();
mPresenter.detachView();
}
protected abstract T createPresenter();
}
MVP BaseActivity 는 두 개의 범 형 을 포함 하고 하 나 는 View 의 인터페이스 유형 이 며 하 나 는 Presenter 의 구체 적 인 유형 이다.
7. 참고
1. Android MVP 모드 에 대한 분석
PS: 여기 서 읽 기 노트 시 리 즈 는 여기 서 끝 났 습 니 다. 이 책 을 본 지 거의 2 개 월 이 되 었 습 니 다. 수확 이 정말 많 습 니 다. 앞으로 도 시간 을 내 서 몇 번 더 보 겠 습 니 다. 온고지신 하 잖 아 요!이 독서 노트 를 쓰 는 과정 에서 여러분 의 지지 에 감 사 드 립 니 다. 댓 글 에 격려의 목소리 가 담 겨 있어 서 저 에 게 많은 자신 감 을 주 었 습 니 다.가장 설 레 는 것 은 이 책의 저자 중 한 명인 하 홍 휘 씨 도 저 에 게 격려 를 해 주 셨 고 여기 서도 다시 한 번 감 사 드 립 니 다.
얼마 전에 많은 박 우 들 이 연도 총 결 을 쓴 것 을 보고 나 도 느 꼈 다.그럼 저도 간단하게 요약 하 겠 습 니 다. 사실은 안 드 로 이 드 개발 을 한 지 1 년 반 이 되 었 습 니 다. 비록 고수, 신 이 라 고 할 수 는 없 지만.그러나 업무 상의 문 제 는 기본적으로 독립 적 으로 해결 할 수 있 습 니 다.
블 로 그 를 쓰 는 취 지 를 이야기 합 니 다. 블 로 그 를 쓰 는 시간 은 제 가 개발 한 지 거의 1 년 이 되 었 을 때 블 로 그 를 쓰 는 것 도 우연 의 일치 입 니 다. 블 로 그 를 쓰기 전에 저 는 오픈 소스 프로젝트 를 자주 봅 니 다. 예 를 들 어 Github 의 안 드 로 이 드 - open - project 등 입 니 다. 그러면 저 는 매번 선진 적 인 Github 에서 안 드 로 이 드 - open - project 를 검색 합 니 다.비슷 한 것 도 많 고...마침내 어느 날 나 는 정말 번 거 로 웠 다. 그래서 내 가 자주 사용 하 는 이 사이트 들 을 나의 첫 번 째 블 로 그 를 썼 다. 안 드 로 이 드 오픈 소스 와 건어물 사 이 트 를 모 은 후에 책 갈 피 를 저장 했다.이런 편리 함 을 맛 보고 본 격 적 으로 CSDN 블 로그 여행 을 시작 했다.
며칠 전에 우연히 한 대 신의 블 로 그 를 보 았 습 니 다. 이 대 신 은 최근 10 년 동안 꾸준히 블 로 그 를 썼 고 매달 질 좋 은 글 을 썼 습 니 다. 관련 된 지식 도 여러 가지 입 니 다.정말 충격 적 이 었 습 니 다. 그럼 롤 모델 에 게 배우 고 올 해 는 계속 노력 하 겠 습 니 다. 시작 한 이상 버 티 겠 습 니 다.
마지막 으로 독서 노트 의 모든 데모: 다운로드 링크
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.