개발/정보

MVC, MVP, MVVM 패턴 비교

스몰스테핑 2023. 9. 4. 14:49

1. MVC

MVC패턴은 Model + View + Controller를 합친 용어이다.

 

 

  • Model : 에플리케이션에 사용되는 데이터와 해당 데이터를 처리하는 부분.
  • View : 사용자에게 보여지는 UI.
  • Controller : 사용자의 입력을 받고 처리하는 부분.

1-1. 동작 순서

  1. 사용자의 행동이 Controller에 도달
  2. Cotroller는 사용자의 행동을 확인하고 Model을 업데이트
  3. Controller는 Model을 나타내줄 View를 선택
  4. View는 Model을 이용해 화면을 업데이트

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

  1. View가 Model을 이용해 직접 업데이트
  2. Model에서 View에게 Notify하여 업데이트
  3. View가 Polling으로 주기적으로 Model의 변경을 감지하여 업데이트

1-2. 특징

Controller는 여러개의 View를 선택할 수 있는 1:n 구조 Controller는 View를 선택할 뿐 직접 업데이트 하지 않음 (View는 Controller를 알지 못함)

1-3. 장단점

1. 가장 단순한 디자인 패턴으로 보편적이게 많이 사용됨
2. View와 Model 사이의 의존성이 높으므로 에플리케이션의 규모가 커질수록 복잡해지며 유지보수가 어려워짐

 

 

 

2. MVP

MVP패턴은 Model + View + Presenter를 합친 용어이다.

Model, View는 MVC패턴과 동일하며 Controller가 빠지고 Presenter가 들어와있다.

 

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

2-1. 동작 순서

  1. 사용자의 행동이 View를 통해 전달
  2. View가 데이터를 Presenter에 요청
  3. Presenter는 Model에 데이터 요청
  4. Model은 Presenter에서 요청받은 데이터를 공급
  5. Presenter는 View에게 데이터를 응답
  6. View는 Presenter가 응답한 데이터를 이용해 화면 업데이트

2-2. 특징

Presenter는 View, Model의 인스턴스를 지니고 있어 둘 사이의 다리와 같은 역할을 한다
Presenter와 View는 1:1 관계이다

2-3. 장단점

View와 Model의 의존성이 없어, 에플리케이션의 규모가 커져도 유지보수에 어려움은 없다
대신 View와 Presenter가 높은 의존성을 가지게 되며, 에플리케이션의 규모가 커질수록 둘 간의 의존성이 짙어진다

 

 

 

3. MVVM

MVVM패턴은 Model + View + View Model이 합쳐진 용어다.

Model, View는 다른 패턴과 동일하며 마지막 부분이 View Model로 교체되었다.

 

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

3-1. 동작 순서

  1. 사용자의 행동이 View를 통해 전달
  2. View에 행동이 전달되면, Command 패턴으로 View Model에 행동을 전달
  3. View Model은 Model에 데이터 요청
  4. Model은 View Model에게 요청받은 데이터 응답
  5. View Model은 응답 받은 데이터를 가공해 저장
  6. View는 View Model과 Data Binding하여 화면을 업데이트

3-2. 특징

MVVM 패턴은 Command패턴과 DataBinding패턴을 사용하여 구현됨
위 두 패턴을 이용해 View와 View Model 간의 의존성을 제거함
View Model과 View는 1:n 관계

Command : https://ko.wikipedia.org/wiki/%EC%BB%A4%EB%A7%A8%EB%93%9C_%ED%8C%A8%ED%84%B4

DataBinding : https://en.wikipedia.org/wiki/Data_binding

3-3. 장단점

View와 Model간 의존성이 없으며
Command 패턴과 DataBinding을 사용해 View와 View Model간의 의존성 또한 존재하지 않음
각각이 전부 독립적이기에 모듈화시켜 개발이 가능함
다만 View Model의 설계가 복잡함

 

참고 자료 :

https://magi82.github.io/android-mvc-mvp-mvvm/

 

MVC, MVP, MVVM 비교 – 마기의 개발 블로그 – 즐겁게 개발을 하고 싶은 욕심 많은 개발자

안녕하세요. 마기입니다. 개발 관련 블로그 정리 두번째 시간입니다. 이번 시간에는 협업, 유지보수, 테스트의 용이성 등을 위한 쾌적하고 좋은 환경에서 개발을 하기 위한 프레임워크 패턴들에

magi82.github.io

https://brunch.co.kr/@oemilk/113

 

MVC, MVP, MVVM, MVI

Android MVC, MVP, MVVM, MVI | MVC, MVP, MVVM, MVI 안드로이드 앱을 개발할 때, 이용할 수 있는 여러 아키텍처 패턴들이 있습니다. MVC (Model-View-Controller) MVP (Model-View-Presenter) MVVM (Model-View-ViewModel) MVI (Model-View-I

brunch.co.kr

https://velog.io/@blucky8649/MVC-MVP-MVVM-%ED%8C%A8%ED%84%B4%EC%9D%98-%ED%8A%B9%EC%A7%95

 

MVC, MVP, MVVM 패턴의 특징

요즘 채용 공고를 보면 MVC, MVP, MVVM에 관한 지식 보유자를 우대하는 공고를 많이 볼 수 있습니다. 저 또한 면접에서도 이런 MVVM이 뭔지? MVP와의 차이점에 대해서 많은 질문을 받곤 했습니다. 사실

velog.io

https://beomy.tistory.com/43

 

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

웹 개발자로 일을 하면서 가장 먼저 접한 디자인패턴이 바로 MVC 패턴이었습니다. 그만큼 유명하고 많이 쓰이는 디자인패턴인 MVC 패턴과 MVC 패턴에서 파생되어져 나온 MVP 패턴과 MVVM 패턴을 이야

beomy.tistory.com