MVC (Model - View - Controller)
Controller는 View에 데이터만 전달해야하지만
Activity가 Controller와 View의 역할을 하므로 Click 이벤트를 분리하기 어려움
MVP (Model- View - Presenter)
Controller대신 View에서 요청한 정보를 Model로부터 가공해서 View로 전달하는 Presenter 사용
실질적으로 Presenter를 가운데 두고 Model은 로직, View는 화면을 담당하도록 정확히 분리
MVC의 단점인 View와 Model의 의존성이 제거 됨
단, View와 Presenter가 1:1로 강한 의존성을 가짐
MVP 동작 순서
View에서 사용자 이벤트 수신 > View에서 Presenter 해당 이벤트 호출 > Presenter에서 Model에 해당 데이터 요청 >
Model에서 Presenter로 데이터 전달 > Presenter에서 전달받은 데이터 기반으로 View 갱신
MVVM (Model - View - ViewModel)
Activity에서 ViewModel(Avtivity.this)을 생성하여
ViewModel이 View를 관리
Command와 DataBinding 패턴을 사용함으로 View와 ViewModel 의존성을 제거
View 처리가 복잡할수록 ViewModel 규모가 커지고 Activity가 무용지물 됨
한 개의 View가 N개의 ViewModel 보유가능, 반대도 가능
MVVM, ViewModel의 구현을 위한 라이브러리
LiveData or RxJava, 데이터 홀더
View와 ViewModel 상호 간에 명시적이고 엄격한 종속성 경로를 만들지 않고도 다양한 인터랙션을 가능케 함
RxJava와 차이점으로 LiveData는 생명주기가 끝나면 자동으로 메모리 반환
MVVM, Model의 구현을 위한 라이브러리
Room or ormlite, greendao, ORM(Object Relational Mapping)
SQLite의 모든 기능을 활용하면서 강력한 데이터 베이스 엑세스를 허용
'학습 log (이론) > android' 카테고리의 다른 글
ViewPager2 (0) | 2021.07.24 |
---|---|
'Service' (0) | 2019.12.14 |
'자료형에 대해서' sqlite vs preferences (0) | 2016.11.05 |
'아이콘' 사이즈 가이드라인 훑어보기 (0) | 2016.10.18 |
'dp' 간단하게 이해하기 (0) | 2016.10.18 |