MVC, MVP, MVVM 패턴 비교개발/정보2023. 9. 4. 14:49
Table of Contents
1. MVC
MVC패턴은 Model + View + Controller를 합친 용어이다.
- Model : 에플리케이션에 사용되는 데이터와 해당 데이터를 처리하는 부분.
- View : 사용자에게 보여지는 UI.
- Controller : 사용자의 입력을 받고 처리하는 부분.
1-1. 동작 순서
- 사용자의 행동이 Controller에 도달
- Cotroller는 사용자의 행동을 확인하고 Model을 업데이트
- Controller는 Model을 나타내줄 View를 선택
- View는 Model을 이용해 화면을 업데이트
++ MVC에서 View가 업데이트되는 방법
- View가 Model을 이용해 직접 업데이트
- Model에서 View에게 Notify하여 업데이트
- 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. 동작 순서
- 사용자의 행동이 View를 통해 전달
- View가 데이터를 Presenter에 요청
- Presenter는 Model에 데이터 요청
- Model은 Presenter에서 요청받은 데이터를 공급
- Presenter는 View에게 데이터를 응답
- 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. 동작 순서
- 사용자의 행동이 View를 통해 전달
- View에 행동이 전달되면, Command 패턴으로 View Model에 행동을 전달
- View Model은 Model에 데이터 요청
- Model은 View Model에게 요청받은 데이터 응답
- View Model은 응답 받은 데이터를 가공해 저장
- 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/
https://brunch.co.kr/@oemilk/113
https://velog.io/@blucky8649/MVC-MVP-MVVM-%ED%8C%A8%ED%84%B4%EC%9D%98-%ED%8A%B9%EC%A7%95
'개발 > 정보' 카테고리의 다른 글
객체지향 프로그래밍이 도대체 뭘까? (1) | 2024.04.09 |
---|---|
안드로이드 API 레벨 별 버전, SDK, 이름 (0) | 2023.09.22 |
Git 기본적인 명령어 (0) | 2023.08.24 |
안드로이드 스튜디오 Giraffe 업데이트 살펴보기 (0) | 2023.07.27 |
모두를 위한 컴퓨터 과학 (CS50 2019) (0) | 2023.06.16 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!