MVC

MVC(Model-View-Controller)

Posted by yunki kim on December 18, 2020

  MVC는 애플리케이션을 3개의 논리적 컴포넌트로 분할하는 아키텍처 패턴이다. 이 3개의 컴포넌트는 각각 모델, 뷰, 컨트롤러이며 각 컴포넌트는 애플리케이션의 특정 부분을 담당한다. MVC는 확장가능한 프로젝트를 만들기 위해 가장 많이 사용되는 웹 개발 프레임워크다.

Model

  모델 컴포넌트는 유저가 작업하는 모든 데이터 관련 로직에 해당한다. 이 컴포넌트는 뷰와 컨트롤러 사이에 전송될 데이터 또는 다른 비즈니스 로직과 관련된 데이터를 나타낸다. 로직을 처리한 후 모델의 변경사항을 컨트롤러와 뷰에 전달한다. 예를 들어 Customer 객체는 DB에서 소비자 정보를 찾고, 조작하고 업데이트한다.

  모델은 다음과 같은 규칙을 준수해야 한다.

    1. 사용자가 원하는 편집하길 원하는 데이터를 가지고 있어야 한다.

    2. 뷰, 컨트롤러에 대해서는 알지 말아야 한다.

    3. 변경이 발생하면 변경 통지에 대한 처리방법을 구현해야 한다.

View

  뷰 컴포넌트는 애플리케이션의 모든 UI 로직에 사용된다.

  뷰는 다음과 같은 규칙을 준수해야 한다.

    1. 모델이 가지고 있는 정보를 저장해선 안된다.

    2. 모델, 컨트롤러에 대해서는 알지 말아야 한다.

    3. 변경이 발생하면 변경 통지에 대한 처리방법을 구현해야 한다.

Controller

  컨트롤러는 모델과 뷰 컴포넌트 사이에서 모든 비즈니스 로직과 요청을 처리하는 역할을 한다. 즉, 브릿지 역할을 한다. 모델을 사용해 데이터를 조작하고 뷰와 상호작용해 결과를 출력한다.

  컨트롤러는 다음과 같은 규칙을 준수해야 한다.

    1. 모델, 뷰에 대해 알고 있어야 한다.

    2. 모델, 뷰의 변경을 모니터링 해야 한다.

MVC를 사용하는 이유

  요구 사항은 항상 변한다. 따라서 유지보수의 편의를 위해서는 각 기능간의 결합도가 낮아야 한다. MVC 패턴의 경우 각 컴포넌트는 자신이 맡은 역할만 수행하고 다른 컴포넌트에 결과만 넘겨준다. 따라서 시스템 결합도가 낮아져서 변경이 용이해진다.