독서 노트 (26)

제2 6 장, MVP 응용 구조 모델
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 은 주로 의사 소통 ViewModel 의 다리 로 서 Model 층 에서 데 이 터 를 검색 한 후에 View 층 으로 돌아 가 ViewModel 간 의 결합 이 없고 업무 논 리 를 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 대상 을 계속 보유 PresenterActivity 대상 을 회수 할 수 없 게 되면 이때 메모리 유출 이 발생 한다.
그러면 해결책 은 약 한 인용 과 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 년 동안 꾸준히 블 로 그 를 썼 고 매달 질 좋 은 글 을 썼 습 니 다. 관련 된 지식 도 여러 가지 입 니 다.정말 충격 적 이 었 습 니 다. 그럼 롤 모델 에 게 배우 고 올 해 는 계속 노력 하 겠 습 니 다. 시작 한 이상 버 티 겠 습 니 다.
마지막 으로 독서 노트 의 모든 데모: 다운로드 링크

좋은 웹페이지 즐겨찾기