디자인 패턴은 왜 생겼을까?
-> 유지 보수를 편리하게 하기 위해서 (코트량이 줄어들고 분업화 되어 있어서 수정이 쉬움)
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