이번에는 디자인패턴에 대해서 알아보겠습니다.
MVC (Model - View - Controller) | Model: 데이터 / View: XML파일 / Controller: Activity |
MVP (Model - View - Presenter) | Model: 데이터 / View: Activity / Presenter: Model과 View를 연결해주는 매개체 |
MVVM (Model - View - ViewModel) | Model: 데이터 / View: Activity / ViewModel: Model과 View를 연결해주는 매개체 |
1. MVC (Model - View - Controller)
View: MVC에서 View는 아무 역할 없는 느낌이다. 뷰를 그냥 표시하는 XML파일이라고 생각하면 된다.
Controller: Model과 View를 연결해주는 역할, 유저에게 액션을 받아 처리하는 역할. 즉 Activity, Fragment라고 생각하면 된다.
- 모델과 뷰를 분리해준다는 점. 모델을 쉽게 테스트할 수 있다는 점이다. 하지만 MVC에서 Controller가 깊게 종속되므로 테스트하는데 문제가 있다. 또 코드가 전부 Activity, Fragment쪽으로 몰리게 되어 유지보수에 어려움이 있다.
2. MVP (Model - View - Presenter)
View: MVP에서 View는 MVC에서 Controller에 있던 Activity, Fragment가 넘어왔다고 생각하면 된다. 또 View를 관리하는 Interface를 추가하여 Presenter를 독립적으로 만든다.
Presenter: 기본적으로 Controller와 같은 역할. Controller와 다른점이 있다면, View에 연결되는 것이 아니라 단순한 Interface라는 점. 테스트 용이성 모듈화/유연성 문제를 해결할 수 있다.
- MVC에 비해서 코드가 깔끔해 졌다는 것을 느낄 수 있다. View와 Presenter가 1:1대응으로 View Interface를 구현했다면 Presenter로직을 손 쉽게 테스트 할 수 있다. 하지만 MVC와 마찬가지로 프로젝트를 수정하거나 새로운 기능을 추가할때 로직이 Presenter로 모이게 되며 유지보수에 어려움이 있다.
3. MVVM (Model - View - ViewModel)
View: MVVM에서 View는 MVC에서 Controller에 있던 Activity, Fragment가 넘어왔다고 생각하면 된다. 또 데이터 바인딩을 위해 XML을 적절히 변경해 주어야 한다. 이를 통해 View는 Model과 유연한 Binding이 가능하다.
ViewModel: ViewModel은 View에 종속되면 안된다. ViewModel을 통해 사용할 Model을 래핑하고 Binding시켜줄 Observe데이터를 생성한다.
-MVVM은 DataBinding의 이해도가 필요. 또 ViewModel은 View에 의존도가 없으므로 MVP처럼 가상View를 만들 필요가 없음. ViewModel과 View의 종속성이 1:N의 관계이므로 코드의 양을 줄일 수 있다.
'개발관련' 카테고리의 다른 글
[Github] 저장소에 있는 파일 삭제하는 방법 (0) | 2023.09.20 |
---|---|
[Android] 디바이스(Device) 무선 연결하는 방법 (0) | 2022.08.08 |
vi에디터 편집 단축키 (복사, 삭제) (0) | 2022.07.22 |
안드로이드(Android) 생명주기(LifeCycle)에 관하여 (0) | 2021.11.18 |
데이터 바인딩 (DataBinding) 이란? (0) | 2021.11.18 |
LiveData에서 setValue() / postValue()의 차이점 (0) | 2021.11.18 |
오버로딩(Overloading) / 오버라이딩(Overriding) (0) | 2021.11.18 |
코루틴(coroutine)이란? (0) | 2021.11.18 |