[매일 개념] 디자인 패턴 - MVC, MVP, MVVM
MVC
구조
- MVC 패턴은 Model + View + Controller를 합친 패턴
- Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
- View : 사용자에서 보여지는 UI 부분
- Controller : 사용자의 입력(Action)을 받고 처리하는 부분
동작 순서
- 사용자의 Action들이 Controller에 들어옴.
- Controller는 사용자의 Action을 확인하고, Model을 업데이트
- Controller는 Model을 나타내줄 View를 선택
- View는 Model을 이용하여 화면을 나타냄
특징
- Controller는 여러개의 View를 선택할 수 있는 1:n 구조
- Controller는 View를 선택할 뿐 직접 업데이트 하지 않음
장점
단점
- View와 Model 사이의 의존성이 높음, 그렇기 때문에 규모가 커질수록 복잡해지고 유지보수가 어려움
MVP
구조
- Model + View + Presenter를 합친 패턴. Model과 View는 MVC패턴과 동일하고, Controller대신 Presenter가 존재.
- Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
- View : 사용자에서 보여지는 UI 부분
- Controller : View에서 요청한 정보로 Model을 가공하여 View에 전달
동작
- 사용자의 Action들이 View를 통해 들어옴.
- View는 데이터를 Presenter에 요청
- Presenter는 Model에 데이터를 요청
- Model은 Presenter에서 요청받은 데이터를 응답
- Presenter는 View에 데이터를 응답
- View는 Presenter가 응답한 데이터를 이용해 화면에 나타냄
특징
- Presenter는 View와 Model의 인스턴스를 가지고 있어 둘을 연결하는 역할
- Presenter와 View는 1:1 관계
장점
- View와 Model의 의존성이 없음. MVC 패턴의 단점이었던 의존성을 해결
(Presenter를 통해서만 데이터를 전달 받기 때문)
단점
- 어플리케이션의 복잡해질수록 View와 Presenter 사이의 의존성이 높음.
MVVM
구조
- Model + View + View Model을 합친 패턴. Model과 View는 다른패턴과 동일
- Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
- View : 사용자에서 보여지는 UI 부분
- Controller : View를 표현하기 위해 만든 View를 위한 Model. View를 나타내 주기위한 Model이자 View를 나타내기 위한 데이터 처리를 하는 부분
동작
- 사용자의 Action들이 View를 통해 들어옴.
- View에 Action이 들어오면, Command 패턴으로 View Model에 Action을 전달
- View Model은 Model에게 데이터를 요청
- Model은 View Model에게 요청받은 데이터를 응답
- View Model은 응답 받은 데이터를 가공하여 저장
- View는 View Model과 Data Binding하여 화면을 나타냄
특징
- Command 패턴과 Data Binding 두 가지 패턴을 사용
- View와 View Model 사이의 의존성을 없앰
장점
- View와 Model의 의존성이 없음. View와 View Model 사이의 의존성 또한 없음.
각각의 부분이 독립적이기 때문에 모듈화 하여 개발
단점