- 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의 의존성이 사라짐.



- 무엇을 사용해야하나?

위에서 설명한 각각의 패턴들은 각자의 장단점이 존재.

무엇을 사용해야 한다는 것은 정해진 것이 없다.

프로젝트의 규모와 필요한 기능들에 따라 선택하여 사용하면 된다.




to Top