Computer Science

[CS] MVC Pattern

jyc_ 2025. 1. 20. 15:01

Model - View - Controller Pattern

애플리케이션의 구성 요소를 세 가지 역할로 분리하여 코드의 유지보수성과 확장성을 높이는 데 사용하는 아키텍처 패턴


구성 요소

Model

  • 데이터와 비즈니스 로직을 처리하는 부분
  • DB, 상태 관리, 응용 프로그램의 핵심 로직을 포함한다.
  • View나 Controller와는 독립적으로 동작하며, 데이터의 변경 사항을 View에 알려준다.
  • e.g. DB에서 영화 정보를 가져오는 클래스

View

  • UI를 담당
  • 화면에 데이터를 출력하고, 사용자의 입력을 처리하기 위한 시각적 요소를 포함한다.
  • Model에서 데이터를 가져와 화면에 출력하고, Controller와 협력하여 사용자 입력을 처리한다.
  • e.g. HTML, JSP, XML layout file 등

Controller

  • 사용자의 입력을 받아 처리한다.
  • Model과 View 사이를 연결한다.
  • 사용자 요청을 처리하고, Model의 데이터를 업데이트하며, 필요한 경우 View를 갱신한다.

동작 흐름

  1. 사용자 입력
    • 사용자가 UI(View)를 통해 요청을 보낸다.
  2. Controller 처리
    • Controller는 요청을 분석하여 적절한 Model 로직을 실행한다.
  3. Model 업데이트
    • Controller가 Model에 데이터를 요청하거나 갱신한다.
  4. View 갱신
    • Model에서 데이터를 가져와 화면(View)을 업데이트한다.

장단점

장점

  • 모듈화를 통해 코드 수정 및 유지보수의 용이성을 높인다.
  • 모델과 컨트롤러는 다양한 뷰와 함께 재사용이 가능하다.
  • 역할 분담이 명확하여 팀 협업 시 효율적이다.

단점

  • 작은 프로젝트에서는 불필요하게 복잡한 구조가 될 수 있다.
  • 컴포넌트를 분리하고 설계하는데 시간과 노력이 필요하다. → 초기 설계 비용