관리 메뉴

log.Sehee

디자인 패턴 / MVC, MVP, MVVM 본문

CS

디자인 패턴 / MVC, MVP, MVVM

Sehe_e 2023. 11. 8. 13:39

디자인 패턴

컴퓨터 공학에서 디자인 패턴이란 무엇인지 알아보자

  : 프로그램을 설계할 때 자주 발생했던 문제점들을 피하기 위해 하나의 규약 형태로 만들어 놓은 설계 패턴

  각각의 역할을 지정해 책임을 분리하며 결합도를 낮추고 확장, 테스트, 유지 보수에 용이하다.

 

디자인 패턴의 이점

  : 재사용성, 유지보수성, 확장성, 협업에 용이

 


[디자인패턴] MVC, MVP, MVVM 비교

MVC (Model, View, Controller)

  : Controller가 여러 개의 View를 선택할 수 있는 1:N 구조, 가장 단순하며 보편적이다.

  View와 Model 사이의 의존성이 높다. 어플리케이션이 커질수록 유지보수가 어려워진다.

 

Model

  : View에 표시되기 위해 필요한 데이터이며 비즈니스 로직을 설명하는 클래스의 집합이다.

  데이터가 어떻게 변경되고 조작될 수 있는지에 관한 규칙을 정의한다.

View

  : UI 구성요소를 나타내며 Controller로부터 받은 UI 데이터를 표시하는 역할이다.

  데이터의 상태 변화 업데이트를 위해 옵저버 패턴을 이용하여 Model을 관찰한다. 

Controller

  : 클라이언트의 요청을 처리하며 View와 Model 사이를 중재한다.

  Model을 통해 받은 데이터를 처리, 결과값을 View에 반환한다. 

 

동작 순서

  1. 사용자의 Action이 Controller에 들어온다.
  2. Controller가 Action을 확인, Model을 업데이트한다.
  3. Controller는 Model을 표시할 View를 선택한다.
  4. View가 Model을 사용하여 화면을 나타낸다.

 


MVP (Model, View, Presenter)

  : MVC에서 파생되어 Controller의 역할을 Presenter가 수행한다.

  View와 Model 사이의 의존성이 없지만 View와 Presenter사이의 의존성이 높고 어플리케이션이 커질수록 의존성이 커진다.

 

Presenter

  : View를 통해 사용자의 입력을 받는다.

  Model을 조작하고 View를 업데이트하며 Present는 View와 Interface를 통해 통신한다.

  Interface는 Presenter 클래스에서 정의되며 구성요소(Activity, Fragment)는 Interface를 구현, 데이터를 랜더링한다.

 

동작 순서

  1. 사용자의 Action이 View를 통해 들어온다.
  2. View가 데이터를 Presenter에 요청한다.
  3. Presenter는 Model에게 데이터를 요청한다.
  4. Model은 Presenter에게 데이터를 응답한다.
  5. Presenter가 데이터를 가공, View에게 응답한다.
  6. View는 Presenter로부터 데이터를 응답받고 UI 데이터를 갱신한다.

 


MVVM (Model, View, View Model)

  : 양방향 데이터 바인딩을 지원한다. View Model의 데이터 변화를 View에 보낸다.

  옵저버 패턴을 활용, View Model의 변경사항을 Model에게 알린다.

  테스트 및 확장 용이성이 증가한다.

 

View Model

  : View의 상태 유지 및 변화, View에 대한 작업의 결과로 Model을 조작한다.

  Command 패턴과 Data Binding을 통해 View와 View Model 사이의 의존성을 없앴다.

  다수의 View는 하나의 ViewModel에 매핑될 수 있어 View Model은 다수의 View에 대해 완전히 독립적이다.

 

+

Command 패턴 : View에서 UI를 처리하기 위해 View Model에 전달하는 요구사항을 캡슐화한 것

Data Binding : View와 View Model 사이의 데이터를 동기화시키는 것

 

동작 순서

  1. 사용자의 Action이 View를 통해 들어온다.
  2. View가 View Model에 Action을 전달한다.
  3. View Model이 Model에게 데이터를 요청한다.
  4. Model은 ViewModel에게 요청받은 데이터를 응답한다.
  5. View Model은 응답받은 데이터를 가공하여 저장한다.
  6. View는 Data Binding을 이용해 UI를 갱신한다.

 


MVC와 MVVM의 차이점

 

MVC (Model, View, Controller) MVVM (Model, View, View Model)
애플리케이션의 진입점 : Controller 애플리케이션의 진입점 : View
View에 Controller에 대한 참조 X View에 View Model에 대한 참조 O
Controller : View / 1:N View : View Model / 1:N
모델을 사용자와 별도로 테스트 가능 별도의 단위테스트가 용이, 코드가 이벤트 기반

 

Comments