본문 바로가기
Study/CS

[CS] 디자인 패턴 - MVC, MVP, MVVM

by dev_kong 2023. 1. 9.
728x90
728x90

MVC

 

MVC 패턴
Model, View, Controller 세개의 컴포넌트로 이뤄진 디자인 패턴.

애플리케이션의 구성요소를 세가지 역할로 구분하여 개발 프로세스에서 가ㅣ깍의 구성요소에만 집중해서 개발 할 수 있다.


재사용성과 확장성이 용이하지만,
반대로 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해지는 단점이 있다.

 

Model

 

DATA, 정보들의 가공을 책임지는 컴포넌트
비즈니스 로직을 처리한 후 모데르이 변경사항을 컨트롤러와 뷰에 전달한다.

 

모델은 다음과 같은 규칙을 가지고 있다.

  • 사용자가 편집하길 원하는 모든 데이터를 가지고 있다.
  • 뷰나 컨트롤러에 대해서 어떤 정보도 알지 말하야 한다.
  • 변경이 일어나면, 변경 통지에 대한 처리방법을 구현해야 한다.

 

View

 

사용자에게 보여지는 부분을 담당하는 컴포넌트.
즉, UI(User Interface)를 의미한다.

 

뷰는 다음과 같은 규칙을 가지고 있다.

  • 모델이 가지고 있는 정보를 따로 저장해서는 안된다.
  • 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야 한다.
  • 변경이 일어나면 변경통지에 대한 처리 방법을 구현해야 한다(컨트롤러에 전달).

 

Controller

 

모델과 뷰 사이를 이어주는 브릿지역할을 하는 컴포넌트

 

모델과 뷰는변경사항을 외부로 알리고, 수신하는 방법은 가지고 있지만 서로의 존재를 모르고 있다.
컨트롤러는 뷰의 변경사항을 모델로, 모델의 변경사항을 뷰로 전달하는 중간 다리 역할을 한다.

 

그에 따라 다음과 같은 규칙을 가지고 있다.

  • 모델이나 뷰에대해서 알고 있어야 한다.
  • 모델이나 뷰의 변경을 모니터링 해야한다.

 

MVC의 한계

팔방미인 같은 MVC 패턴도 한계가 존재한다.


복잡한 대규모 프로그램의 경우 다수의 뷰와 모델이 컨트롤러를 통해 연결되는데,
이로 인해 컨트롤러라 뷸필요하게 커지는 경우가 발생한다.

 

이러한 한계점들을 보완하기 위해 다양한 패턴이 파생되었다.

 

MVP

 

MVC패턴으로 부터 파생된 MVP 패턴은 컨트롤러(Controller)가 프레젠터(Presenter)로 교체된 패턴 이다.
뷰와 프레젠터가 1:1 관계이다.

 

장점

Presenter를 통해서만 데이터를 전달받으므로,
기존 MVC 패턴의 단점이어었던 View와 Model의 의존성을 해결하였다.

 

단점

View와 Presenter사이의 의존성이 높아짐...

조삼모사 아니냐..?

 

MVVM

 

MVVM 패턴은 컨트롤러가 뷰 모델(view model)로 바뀐 패턴이다.

 

특징

컨틀롤러를 대신하여 뷰를 더 추상화한 계층인 ViewModel을 사용한다.

 

MVC패턴 과는 다르게 커맨드와 데이터 바인딩을 가지는 것이 특징이다.
이를 이용하여 View와 ViewModel의 의존성을 없앴다.

 

커맨드
여러가지 요소에 대한 처리를 하나의 액션으로 처리할 수 있게하는 기법

데이터 바인딩
화면에 보이는 데이터와 웹 브라우저의 메모리 데이터를 일치시키는 기법.
뷰모델을 변경하면 뷰가 변경된다.

단, ViewModel의 설계가 쉽지 않다는 단점이 있다.

728x90
728x90

댓글