MVC, MVP, MVVM

 

 

1. MVC (Model - View - Controller)

Model: 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분

View: UI(User Interface)

Controller: 사용자의 입력을 받고 처리

 

 

- 동작

1. 사용자의 Action이 Controller로 전달된다.

2. Controller는 사용자의 Action에 따라서 Model을 업데이트한다.

3. Controller는 Model을 나타내줄 View를 선택한다.

4. View는 Model을 이용하여 화면을 나타낸다. (View가 직접 업데이트(Model이용 or 변경감지), Model이 View에 Notify)

 

- 특징

> Controller는 여러개의 View를 선택할 수 있는 1:n관계를 가지며, View를 선택할 뿐 직접 업데이트 하지 않는다 (View는 Controller를 알지 못한다)

> View와 Model사이에 높은 의존성을 가질 수 있다.

 

 

 

2. MVP (Model - View - Presentation)

- Model: 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분

- View: 사용자에서 보여지는 UI부분

- Presenter: View에서 요청한 정보로 Model을 가공하여 View에 전달해 주는 부분. View와 Model 사이에서 조절

- 동작

1. 사용자의 Action이 View를 통해 들어온다.

2. View는 필요한 데이터를 Presenter에게 요청한다.

3. Presenter는 Model에게 데이터를 요청하고, Model은 요청받은 데이터를 응답한다.

4. Presenter는 View에게 데이터를 응답한다.

5. View는 Presenter의 데이터를 이용하여 화면을 표시한다.

 

- 특징

Presenter는 View와 Model 사이에서 각각의 인스턴스를 가지며, 둘을 연결해준다. MVC와 다르게 Model과 View 사이에는 의존성이 없다. 하지만 Presenter와 View 사이에 의존성이 강해지게 된다.

 

 

 

3. MVVM (Model - View - View Model)

 

- Model: 어플리케이션에서 사용되는 데이터, 실제 데이터 처리 담당

- View: UI (User Interface)

- View Model: View를 표현하기 위해서 만든 Model이다. 뷰가 사용할 함수와 필드를 구현하고, 뷰에게 상태 변화를 알린다. 즉, View가 쉽게 데이터를 사용할 수 있도록 Model의 데이터를 가공하여 View에게 전달한다.

(MVP모델의 Presenter와 비슷하나 뷰 모델은 View에 대한 참조를 가지지 않고, 뷰는 뷰 모델의 속성에 직접 연결된 채로 업데이트를 주고받는다.)

- 동작

1. 사용자의 Action이 View를 통해서 들어온다.

2. View의 Action이 들어오면, Command패턴(실행될 기능 캡슐화)으로 View Model에 Action을 전달하고, View Model은 Model에 데이터를 요청한다.

3. Model은 View Model에 요청받은 데이터를 응답하고, View Model은 응답 받은 데이터를 가공하여 저장한다.

4. View는 View Model과 Data Binding하여 화면에 표시한다.

 

- 특징

View와 Model 사이에 의존성이 없고, Data Binding을 이용하여 View와 View Model 사이에도 의존성이 없기 때문에 효율적인 모듈화가 가능하다.

 

 

참고: https://beomy.tistory.com/43