본문 바로가기
카테고리 없음

디자인 패턴 MVC, MVP, MVVM

by liz_devel 2021. 6. 21.

디자인 패턴은 왜 생겼을까?

-> 유지 보수를 편리하게 하기 위해서 (코트량이 줄어들고 분업화 되어 있어서 수정이 쉬움)

1. MVC (Model, View, Controller)

Model: 데이터 관련된 부분 ( 자료 저장, 불러오기 등이 이루어짐)

View: 사용자 눈에 보이는 UI(User Interface)

Contoller: View와 Model을 연결하여 전반적 제어를 함

단점: 뷰와 모델 사이의 의존성이 높음. 디자인 패턴은 유지보수를 편리하기 위함인데 높은 의존성을 가질 경우 코드가 많아지면 결국 유지보수가 어려워진다.

MVC가 있는데 MVP는 왜 나왔을까?

MVC의 뷰와 모델 사이의 의존성이 높다는 단점을 보완해주기 위해 MVP 패턴이 생겼다.

MVP 패턴은 뷰와 모델을 분리한다.

안드로이드의 경우 뷰와 컨트롤이 붙어 있다. (ex - 액티비티, 프래그먼트)

*View = xml , Controller = Activity

2. MVP (Model, View, Presenter)

Model: 데이터 관련된 부분 ( 자료 저장, 불러오기 등이 이루어짐)

View: 사용자 눈에 보이는 UI(User Interface)

Presenter: 본질적으로는 MVC의 Controller와 같아보이지만 Presenter는 뷰에 연결되는 것이 아니라 인터페이스로 연결됨

(뷰와 모델사이에서 자료 전달 역할)

단점: 하나의 화면 생성 시 뷰, 모델, 프리젠터, 인터페이스를 생성해야 해서 코드가 방대해짐

뷰와 모델 사이의 외존성은 해결되었지만 뷰와 프리젠터 사이의 1:1 의존성이 생김

MVVM이 생겨난 이유?

MVC는 모델과 뷰 사이의 의존성이 높고 MVP는 뷰와 프리젠터 사이의 의존성이 높다

따라서 코드가 복잡해지고 양이 많아질수록 결국에는 유지 보수 또한 복잡해진다

이 의존성을 해결하기 위해 각 영역을 독립적으로 사용할 수 있는 MVVM이 등장했다

(Command 패턴과 Data Binding을 이용해 독립적으로 분리할 수 있기 때문에 모듈화하여 개발할 수 있음)

3. MVVM (Model, View, ViewModel)

Model: 데이터 관련된 부분 ( 자료 저장, 불러오기 등이 이루어짐)

View: 사용자 눈에 보이는 UI(User Interface)

View Model: View를 나타내기 위한 Model

반응형