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

y0ung·2021년 2월 3일
0

MVC

Model + View + Controller

구조

  • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
  • View : 사용자에게 보여지는 UI부분
  • Controller : 사용자의 입력(Action)을 받고 처리하는 부분

동작

  1. 사용자의 Action들은 Controller가 감지 한다.

  2. Controller는 사용자의 Action을 확인하고, Model을 업데이트 한다.

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

  4. View는 Model을 이용하여 화면을 나타낸다.

MVC에서 View가 업데이트 되는 방법

  • View가 Model을 이용하여 직접 업데이트 하는 방법
  • Model이 View에게 Notify해줘서 업데이트 하는 방법
  • View가 Polling을이용해 주기적으로 Model의 변경을 감지하여 업데이트 하는 방법
polling?

polling 이란?

하나의 장치(또는 프로그램)가 충돌 회피 또는 동기화 처리 등을 목적으로 다른 장치 의 상태를 주기적으로 검사하여 일정한 조건을 만족할 때 송수신 등의 자료처리를 하는 방식

특징

C는 여러개의 V를 선택할수 있고 , C는 V를 직접 업데이트 하진 않는다(서로 안친하다)

장점 | 단점

장점단점
- 널리 사용되고 있는 패턴
- 가장 단순
- 보편적으로 많이 사용
- View와 Model사이의 의존성이 높다
- 어플리케이션이 커질수록 복합해지고 유지보수가 어려워 진다.

MVP

Model + View + Presenter

구조

  • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분
  • View : 사용자에게 보여지는 UI부분
  • Presenter : View에서 요청한 정보로 Model을 가공하여 View에 전달해준다. View와 Model에게 꼭 필요한 존재

동작

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

  2. View는 데이터를 Presenter에 요청합니다.

  3. Presenter는 Model에게 데이터를 요청.

  4. Model은 Presenter에서 요청받은 데이터를 응답.

  5. Presenter는 View에게 데이터를 응답합니다.

  6. View는 Presenter가 응답한 데이터를 이용하여 화면을 나타냅니다.

특징

P는 V,M의 인스턴스를 가지고 있어 둘을 연결하는 역할을 한다. P와 V는 1:1관계이다.

장점 | 단점

장점단점
- View와 Model의 의존성이 없다.
( Presenter를 통해서만 데이터를 전달 받기 때문)
- View와 Presenter사이의 의존성이 높아졌다.
- 어플리케이션이 복잡해질수록 View와 Presenter사이의 의존성이 강해진다.

MVVM

Model + View + View Model

구조

  • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분.
  • View : 사용자에서 보여지는 UI 부분.
  • View Model : View를 표현하기 위해 만든 View를 위한 Model이다. View를 나타내 주기 위한 Model이자 View를 나타내기 위한 데이터 처리를 하는 부분.

동작

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

  2. View에 Action이 들어오면, Command 패턴으로 View Model에 Action을 전달

  3. View Model은 Model에게 데이터를 요청합니다.

  4. Model은 View Model에게 요청받은 데이터를 응답

  5. View Model은 응답 받은 데이터를 가공하여 저장.

  6. View는 View Model과 Data Binding하여 화면을 나타낸다.

특징

Command 패턴과 Data Binding 두 가지 패턴을 사용하여 구현되었다.

Command 패턴과 Data Binding을 이용하여 View와 View Model 사이의 의존성을 없앴다.
VM과 V는 1:n 관계이다.

장점 | 단점

장점단점
- View와 Model사이의 의존성이 없다.
- Command패턴과 Data Bining을 사용하여
View와 View Model사이의 의존성 또한 없앤 디자인 패턴이다
- 각각의 부분은 독립적이기 때문에 모듈화 하여 개발할 수 있다.
- View Model의 설계가 쉽지 않다.

참고

https://magi82.github.io/android-mvc-mvp-mvvm/
https://brunch.co.kr/@oemilk/113

profile
어제보다는 오늘 더 나은

0개의 댓글