디자인패턴

MVC 패턴 (Model-View-Controller pattern)

diligentdev 2024. 6. 20. 14:40
728x90

 

하나의 어플리케이션을 구성할 때 그 구성 요소를 세가지 역할로 구분한 패턴

  • Model
    • 어플리케이션의 정보, 데이터
      • data, 정보들의 가공을 책임지는 컴포넌트
    • 사용자가 편집하길 원하는 모든 데이터를 가지고 있어야 함
    • 뷰나 컨트롤러에 대해 어떤 정보도 알지 말아야 함
    • 변경이 일어나면 변경 통지에 대한 처리 방법을 구현해야만 함
      • getter, setter
  • View
    • 사용자 인터페이스 요소
    • 모델이 가지고 있는 정보를 따로 저장해서는 안됨
    • 모델이나 컨트롤러와 같이 다른 구성요소들을 몰라야함
    • 변경이 일어나면 변경통지에 대한 처리방법을 구현해야만 함
  • Controller
    • 사용자가 데이터를 클릭하고, 수정하는 것에 대한 이벤트틀을 처리하는 부분을 뜻함

장점

  • 코드의 유지보수성 향상
    • 각 구성 요소(모델, 뷰, 컨트롤러)가 명확한 역할을 가지고 있어 코드의 가독성과 유지보수가 용이
  • 코드의 재사용성
    • 특정 기능을 변경할 때 해당 부분만 수정하면 되므로 재사용성이 높아짐
  • 개발 생산성 향상
    • 개발자들이 각자의 역할에 집중할 수 있어 개발 효율성이 높아짐
    • 예를 들어 디자이너는 뷰, 개발자는 모델과 컨트롤러에 집중할 수 있음
  • 확장성 향상
    • 새로운 기능을 추가하거나 기존 기능을 변경할 때 영향을 받는 부분이 최소화되므로 확장성이 높아짐
  • 병렬 개발 가능
    • 모델, 뷰, 컨트롤러가 분리되어 있어 여러 개발자가 동시에 작업 가능
  • 디버깅 용이
    • 각 구성 요소가 명확히 분리되어 있어 오류 발생 시 원인을 찾기 쉬움

단점

  • 복잡성 증가
    • MVC 패턴을 적용하면 코드의 분리로 인해 전체적인 복잡도가 증가할 수 있음
    • 모델, 뷰, 컨트롤러 간의 의존성과 통신 방식을 고려해야 하므로 단순한 애플리케이션에서는 오버헤드가 발생할 수 있음
  • 동시성 이슈
    • 다중 스레드 환경에서 모델과 뷰 간의 동기화 문제가 발생할 수 있음

MVC 패턴은 대규모 프로젝트장기 유지보수가 필요한 프로젝트에 적합한 패턴

728x90