사용자 인터페이스, 데이터 및 논리 제어를 구현하는데 널리 사용되는 소프트웨어 디자인 패턴
소프트웨어의 비즈니스 로직과 화면을 구분하기 위함
Model
View
Controller
Controller는 여러개의 View를 선택할 수 있는 1:N 구조
패턴 | 장점 | 단점 | 특징 |
---|---|---|---|
MVC | 가장 단순한 패턴으로 여러 개발 분야에서 보편적으로 사용되는 디자인 패턴 | View와 Model사이의 의존성이 높기 때문에, 이는 앱이 커질수록 유지보수가 어려움 | |
Controller 비대 | |||
MVP | MVP패턴은 인터페이스를 통해 통신하기 때문에 View와 Model사이의 의존성이 없음 | View와 Presenter사이의 의존성이 높고, 앱이 커질수록 이 의존성은 더 강해짐 | View에 직접 연결되는 대신 인터페이스를 통해 상호작용한다는 차이가 있음. |
MVVM | 데이터 바인딩을 이용한다면 View와 ViewModel 사이의 의존성을 없앨 수 있음 | ViewModel의 설계가 매우 어려움 | |
MVI | 상태는 불변성을 가지기 때문에 우리는 예상 가능한 값을 얻을 수 있습니다. | ||
데이터의 흐름이 정해져 있어 흐름을 이해하고 관리하기가 쉽다. | 다른 MV들에 비해 러닝커브가 높다. | ||
작은 변경도 모두 intent를 통해야 하고, 아주 작은 앱도 최소한의 intent와 model를 가져야 한다. |