
사용되는 데이터의 형태를 정의하고 데이터를 처리하는 부분
사용자에게 보여지는 UI 부분
사용자의 입력을 받고 처리하는 부분
Controller에서 사용자의 입력 -> Model 업데이트 -> View는 Model를 통해 View를 업데이트
가장 단순한 패턴으로 구현이 단순하다.
View 와 Model 사이의 업데이트 관계가 있다 보니 의존성이 높아진다. 이 때문에 프로젝트의 규모가 커지면 복잡해진다.
Controller 와 View 가 1:N 의 구조로 연결된다.

사용되는 데이터의 형태를 정의하고 데이터를 처리하는 부분
사용자에게 보여지는 UI 부분
사용자의 입력을 받고 처리하는 부분
View에서 사용자의 입력 -> Presenter에서 Model 업데이트 -> Presenter를 통해 View 업데이트
View 와 Model 사이의 연결점이 없어서 의존성문제가 사라진다.
대신 Presenter 역할이 중요해지면서 View와 Presenter 사이의 의존성 문제가 생긴다.
Presenter 와 View 가 1:1 의 구조로 연결된다.

사용되는 데이터의 형태를 정의하고 데이터를 처리하는 부분
사용자에게 보여지는 UI 부분
View에서 필요한 데이터를 처리하는 부분
View에서 사용자의 입력을 ViewModel로 전달 -> ViewModel에서 Model로 데이터 요청 및 처리 -> View는 ViewModel를 Provider나 Stream 등을 통하여 구독하거나 데이터 상태 관리를 통해 View를 업데이트
ViewModel이 따로 저장하는 데이터를 구독하여 자동 업데이트 하는 구조로서, View가 독립적으로 변함으로써 Model, ViewModel 과의 의존성 문제를 해결했다.
다른 패턴에 비해 상대적으로 이해가 어렵고 처음 설계가 복잡하다.
ViewModel 과 View가 1:N 의 구조로 연결된다. ViewModel이 View를 모르고, Model이 View와 ViewModel을 모르는 구조이다.