2021. 11. 17. 01:04ㆍ개발/[Kotlin] 안드로이드 개발
MVC, MVP, MVVM등 다양한 디자인 패턴을 적용하는 이유는 각각의 역할을 나눠 코드를 관리하자
라는 목적으로 생겨났다.
1. MVC
MVC패턴은 Model+View+Controller를 합친 용어이다. MVC패턴의 구조, 동작, 특징, 장점, 단점으로는..
1) 구조
- Model: Controller에서 요청받은 데이터 관련 작업들을 처리하는 부분
- View : 어플리케이션에서 사용자가 눈으로 보는 부분, 모델에서의 데이터를 뷰에서 나타냄
- Controller : 사용자의 입력을 받고 처리하는 부분
2) 동작
MVC 패턴의 동작 순서
1. 사용자의 Action은 Controller로 들어온다.
2. Controller는 사용자의 Action을 확인하고 Model에 데이터를 요청한다.
3. View에서 Model을 이용해 데이터를 화면에 나타낸다.
※ 참고- MVC에서 View가 업데이트 되는 방법
1. VIew가 Model을 이용하여 직접 업데이트
2. Model에서 View에게 Notify하여 업데이트
3. View가 Polling으로 주기적으로 Model의 변경을 감지하여 업데이트
3) 특징
Controller는 여러개의 View를 선택할 수 있는 1:n구조이다.
Controller는 View를 선택할 뿐 직접 업데이트 하지 않는다. -> View는 Controller를 알지 못하기 때문
4) 장점
MVC패턴의 장점 단순하게 구조화해서 사용하기 쉽다.
5) 단점
MVC패턴의 단점은 View와 Model사이의 의존성이 높다.
큰 프로젝트일수록 높은 의존성은 복잡하고 유지보수가 어렵다. -> Controller가 뚱뚱해져 유지보수가 어려워짐
2. MVP
MVP 패턴은 Model+View+Presenter를 합친 용어이다. Model과 View는 MVC와 동일하고 Controller 대신 Presenter가 존재한다. MVC패턴의 Controller가 뚱뚱해져서 유지보수에 어렵다는 점 때문에 나온 디자인 패턴
1) 구조
Model : Presenter에서 요청을 받아 데이터 관련 작업을 처리하는 부분
View : 사용자가 눈으로 보는 UI
Presenter : View에서 요청한 정보로 Model을 가공하여 View에 전달해 주는 부분
2) 동작
MVP 패턴의 동작 순서는
1. 사용자의 입력이나 Action이 View로 들어옴
2. VIew가 Presenter로 데이터 요청
3. Presenter는 Model에게 데이터를 요청
4. Model에서 데이터 관련 작업 후 Presenter에게 데이터 전달
5. Presenter는 View에게 데이터 응답
5. View는 Presenter에게 전달받은 데이터를 화면에 표시
3) 특징
Prsenter는 View와 Model의 인스턴스를 가지고 있어 둘을 연결하는 역할을 함.
Presenter와 VIew는 1:1 관계
4) 장점
MVP의 장점은 MVC의 View와 Model사이의 의존성이 커지는 문제를 해결 했다. View와 Model의 의존성이 없다.
Presenter를 통해서만 데이터를 전달 받기 때문이다.
5) 단점
VIew와 Presenter사이의 의존성이 높아진다.
3. MVVM
MVP의 View와 Presenter의 1:1 의존성을 줄이기 위해 설계된 디자인 패턴 Presenter대신 ViewModel이 도입 되었다.
Model +View + ViewModel
1)구조
2) 동작
1. 사용자의 Action이 View로 들어온다.
2. View에서 ViewModel로 Command패턴으로 데이터를 요청한다.
3. ViewModel이 Model로 데이터를 요청한다.
4. Model에서 데이터 관련 작업 후 ViewModel로 데이터를 전달한다.
5. ViewModel에서 View로 데이터를 전달한다.
6. ViewModel에서 전달받은 데이터를 View에서 DataBinding하여 화면을 나타낸다.
3) 특징
MVVM은 Command 패턴과 DataBinding 두 가지 패턴을 사용하여 구현되었다.
Command 패턴과 DataBinding을 이용하여 View와 ViewModel 사이의 의존성을 없앴다.
ViewModel과 View는 1:n관계이다.
4) 장점
MVVM패턴은 View와 Model 사이의 의존성이 없다. 또한 Command패턴과 DataBinding을 사용하여 View와 ViewModel사이의 의존성 또한 없앤 디자인 패턴이다.
5) 단점
진입장벽이 어렵다.
참고
'개발 > [Kotlin] 안드로이드 개발' 카테고리의 다른 글
[Android A..Z] Asynchronous 비동기란? (0) | 2021.11.22 |
---|---|
[Android A..Z] Clean Architecture (0) | 2021.11.21 |
[DialogFragment, Dialog] 안드로이드 DialogFragment 크기 조정하기, 테두리 둥글게 조절하기 (0) | 2021.10.29 |
[Android] Fragment에서 Activity의 resource에 resource까지 접근하기 (0) | 2021.05.25 |
[안드로이드 ROOM] MVVM패턴으로 배우는 ROOM DB(ViewModel, Repository, Koin, Coroutine) (0) | 2021.05.11 |