본문 바로가기
프로그래밍/Computer Science(CS)

MVC(Model-View-Controller) 패턴

by devpcmini 2024. 3. 12.

MVC (Model-View-Controller) 패턴이란?

애플리케이션의 구조를 세 가지 주요 부분으로 나누어 개발하는 방법
각각의 부분은 특정 역할을 담당하며 서로 간의 의존성을 최소화하여 유지보수성과 재사용성을 향상시킨다.

 

  • 모델 (Model)
    • 애플리케이션의 데이터와 비즈니스 로직을 담당합니다.
    • 데이터의 상태를 관리하고, 데이터의 변경을 통보받아 뷰에 업데이트를 알립니다.
    • 사용자 인터페이스나 컨트롤러와 독립적으로 존재하며, 데이터를 다루는 규칙과 로직을 정의합니다.
  • 뷰 (View)
    • 사용자 인터페이스를 담당합니다.
    • 모델의 상태에 따라 화면을 표시하고, 사용자의 입력을 컨트롤러에 전달합니다.
    • 모델과 직접적으로 상호작용하지 않으며, 모델의 변경을 감지하여 화면을 업데이트합니다.
  • 컨트롤러 (Controller)
    • 사용자 입력을 처리하고, 그에 따라 모델을 업데이트하거나 뷰를 갱신합니다.
    • 모델과 뷰 사이의 중개자 역할을 수행하며, 사용자의 명령에 따라 모델을 제어하고 모델의 변경을 감지하여 뷰를 업데이트합니다.
    • 뷰 및 모델에 대한 구체적인 세부사항을 숨기고, 시스템의 전반적인 동작을 조정합니다.

MVC의 이점과 장단점

이점

  • 유지보수성 및 확장성: 각 부분이 독립적으로 존재하기 때문에 모델, 뷰, 컨트롤러를 분리하여 변경 및 확장이 용이하다.
  • 재사용성: 각 부분이 독립적이기 때문에 모델, 뷰, 컨트롤러를 다른 프로젝트에서 재사용할 수 있다.
  • 테스트 용이성: 각 부분이 독립적으로 테스트 가능하며, 특히 컨트롤러는 모델과 뷰를 모의(mock) 객체로 대체하여 테스트하기 용이하다.
  • 유연성: 새로운 기능을 추가하거나 수정할 때 하나의 부분을 변경해도 다른 부분에 영향을 미치지 않아 유연하다.

장단점

  • 복잡성: MVC 패턴은 세 부분으로 나누어져 있어 초기 구현이나 작은 규모의 애플리케이션에서는 오버헤드가 발생할 수 있다.
  • 학습 곡선: 처음에는 이 세 가지 부분의 역할 및 상호 작용을 이해하는 데 시간이 걸릴 수 있다.