MVC

1. 개요

MVC(Model-View-Controller)는 애플리케이션을 세 개의 상호 연결된 부분으로 나누어 사용자 인터페이스를 개발하는 데 일반적으로 사용되는 아키텍처 패턴이다.

MVC 디자인 패턴은 주요 구성 요소를 분리하여 효율적인 코드 재사용과 병렬 개발을 가능하게 한다.

2. 설명

Components
  • 모델은 패턴의 중심 구성 요소이며, 사용자 인터페이스와 독립적인 프로그램의 동적 데이터 구조이다. 프로그램의 데이터, 논리 및 규칙을 직접 관리한다.
  • 뷰는 특정한 정보의 출력 표현이다.
  • 컨트롤러는 입력을 받아 모델 또는 뷰의 명령으로 변환한다.
Interactions
  • 모델은 응용 프로그램의 데이터를 관리한다. 컨트롤러에서 사용자 입력을 받는다.
  • 뷰는 특정 형식으로 모델을 표시한다.
  • 컨트롤러는 사용자 입력에 응답하고 데이터 모델 객체에 대한 상호 작용을 수행한다. 선택적으로 입력받은 데이터에 대해 유효성을 검사 한 다음 입력을 모델에 전달할 수 있다.

3. Goals of MVC

Simultaneous development

MVC는 응용 프로그램의 다양한 구성 요소를 분리하기 때문에 개발자는 서로 영향을주지 않고 서로 다른 구성 요소에서 동시에 작업 할 수 있다.

Code reuse

서로 독립적 인 구성 요소를 작성함으로써 개발자는 다른 응용 프로그램에서 구성 요소를 빠르고 쉽게 재사용 할 수 있다. 하나의 응용 프로그램에 대한 동일한 (또는 유사한) 뷰는 데이터가 다른 응용 프로그램에 대해 리팩터링 될 수 있다. 이는 단순히 데이터가 사용자에게 표시되는 방식을 처리하기위한 것이기 때문이다.

Advantages & disadvantages

Advantages
  • Simultaneous development - 여러 개발자가 모델, 컨트롤러 및 뷰에서 동시에 작업 할 수 있다.
  • High cohesion - MVC를 사용하면 컨트롤러에서 관련된 작업을 논리적으로 그룹화 할 수 있다. 특정 모델에 대한 뷰도 함께 그룹화된다.
  • Low coupling - MVC 프레임 워크의 본질은 모델, 뷰 또는 컨트롤러 사이의 결합이 낮다.
  • Ease of modification - 책임영역의 분리 때문에 향후 개발 또는 수정이 쉽다.
  • Multiple views for a model - 모델들은 여러개의 뷰를 가질수 있다.
Disadvantages
  • Code navigability - 프레임 워크 탐색은 새로운 추상화 계층을 도입하고 사용자가 MVC의 분해 기준에 적응해야하기 때문에 복잡 할 수 있다.
  • Multi-artifact consistency - 특징을 세 가지 요소로 분해하면 산란이 발생할 수 있다. 따라서 개발자가 한 번에 여러 표현의 일관성을 유지하도록 요구한다.
  • Pronounced learning curve - MVC를 사용하는 개발자는 여러 기술에 능숙해야한다.


Improve this page