본문 바로가기

Android/Architecture

[Android] MVC, MVP, MVVM 기본 개념

728x90

MVC 패턴

Model + View + Controller

 

Model : 데이터와 데이터를 처리하는 부분

View : UI

Controller : 사용자의 입력(Action)을 받고 처리하는 부분

MVC 패턴의 동작 순서

  1. Controller에 사용자의 입력(Action)을 받는다.
  2. Controller에서 Action을 확인하고 Model을 업데이트(조작)한다.
  3. Controller에서 해당 Data를 보여줄 View를 선택
  4. View는 Model을 사용하여 화면에 보여준다.

 

이 때, Controller는 View를 선택만하고 업데이트를 시켜주지 않기 때문에 View는 Model을 이용하여 업데이트 하게 된다.

View가 업데이트 하는 방법으로는

  1. Model을 직접 사용한다.
  2. Model에서 VIew에게 Notify 해준다.
  3. View에서 Polling을 통해 Model의 변화를 알아채 업데이트 한다.

MVC 패턴의 특징.

  • Controller와 View는 1:1 관계가 아닌 1:N 관계로, Controller가 여러 개의 View를 선택하여 Model을 나타낼 수 있다.
  • View와 Model 서로간의 의존성이 높다는 단점이 있다.

따라서, View와 Model간의 의존성을 최대한 낮게 설계한 경우 좋은 MVC 패턴이라 할 수 있다.

 

 

 

MVP 패턴

Model + View + Presenter

 

Model, View 는 MVC와 동일

Presenter : View에서 요청한 정보를 Model로 부터 가공하여 View로 전달한다. Model과 View의 다리같은 역할.

MVP 패턴의 동작 순서

  1. 사용자의 Action을 View로 받는다.
  2. View에서 받은 이벤트를 Presenter에게 전달한다.
  3. Presenter에서 Model로 데이터를 요청한다.
  4. Model에서 Presenter로 요청에 따른 응답을 한다.
  5. Presenter에서 결과를 바인딩하여 View로 통보한다.
  6. 받은 정보를 토대로 View를 업데이트 한다.

MVP 패턴의 특징

  • Presenter를 통해 Model과 View를 완벽히 분리해 주기 때문에, MVC 패턴에 있던 Model과 View 사이의 의존성을 해결하였다.
  • Presenter와 View는 1:1 관계이기 때문에 View와 Presenter 사이의 의존성이 매우 강하다.

즉, 기존의 MVC 패턴에서 문제가 되던 의존성을 없애고 새로운 의존성이 생겼다.

 

 

 

MVVM 패턴

Model + View + View Model

 

Model, View 는 MVC와 동일

View Model : View를 나타내기 위한 Model. View 보다는 Model과 유사하게 디자인 되며, View에 나타내기 위한 데이터를 처리한다.

MVVM 패턴의 동작 순서

  1. View에서 사용자의 Action을 받는다.
  2. DataBinding을 통하여 ViewModel에서 직접 이벤트를 받는다.
  3. ViewModel에서 필요한 데이터를 Model에 요청한다.
  4. Model은 필요에 따른 Data를 만든 후, ViewModel에 반환한다.
  5. ViewModel에서 추가적인 가공을 진행한 후 필요한 데이터를 저장한다.
  6. View는 ViewModel의 Data를 Observing하고 있다가 변경을 감지하면 변경된 값으로 화면을 갱신한다.

MVVM 패턴의 특징

  • Command 패턴과 Data Binding을 사용한다.
  • 위의 두 개를 사용함으로써 View Model과 View 사이의 의존성을 없앴다.
  • View Model과 View는 N:1 관계이다.
  • MVC, MVP 패턴에 비해 설계가 어렵다.
728x90