- MVC 모델이란?
M : Model
V : View
C : Controller
의 약자로 어플리케이션을 3가지의 역할로 구분한 개발 방법론을 의미하며
UI(사용자 인터페이스)로부터 로직을 분리하여 유지보수에 이점이 있는 디자인 패턴이다.
- MVC 구성요소
Model은 어플레이케이션의 데이터들을 의미하고, 사용자에게 보여지는것에 대해 신경쓰지않으며, 순수 public 함수로 이루어진다.
View는 UI요소들을 나타내며, 모델에게 질의하여 값을 가져와 사용자에게 보여준다.
Controller는 뷰와 모델의 상호 작용을 관리한다.
- MVC 작동방식
1. User가 View를 통해 소통
2. Controller가 Model에게 Status를 변경하라고 요청
3. Model의 Status가 변경되면 View에게 알림
4. View에서 Model에게 Status에 대한 데이터 요청
- MVC 장점
역할로 인해 각각의 패턴들을 구분하여 개발하므로 유지보수가 용이하며 유연성과 확장성이 높다.
디자이너와 개발자간의 협업이 용이하다.
- MVC 단점
Model과 View의 의존성이 완전히 분리될 수 없기 때문에
설계 단계에서 클래스들이 많아져 구조가 복잡해질 수 있다.
설계시간이 오래걸리며 숙련된 개발자가 필요하다.
- MVP 모델
MVC의 단점 중 Model과 View의 의존성을 줄이기 위해 나온 디자인 패턴이다.
Model과 View는 MVC모델과 같으며 P(Presenter)가 존재
Presenter : View에서 요청한 데이터를 Model로부터 가공하여 View로 전달
MVC 모델과 동일하지만 차이점은 User 입력을 View에서 받음
View에서 받은 데이터는 항상 Presenter를 거쳐 Model과 Communication
따라서 View와 Model은 Presenter의 존재만 알 뿐 서로의 의존성이 사라지게 된다.
하지만 View와 Presenter가 1:1의 강한 의존성이 생김
- MVVM 모델
역시 Model과 View는 같으나 Presenter 대신 ViewModel이 존재.
ViewModel : View를 표현하기 위해 만들어진 Model
Command 패턴과 Data Binding 패턴을 통해 View와 ViewModel의 의존성이 사라짐.
- 무엇을 사용해야하나?
위에서 설명한 각각의 패턴들은 각자의 장단점이 존재.
무엇을 사용해야 한다는 것은 정해진 것이 없다.
프로젝트의 규모와 필요한 기능들에 따라 선택하여 사용하면 된다.