MVC / MVP / MVVM 패턴이란 ?

김세빈·2025년 5월 3일

디자인패턴

목록 보기
7/7

MVC 패턴(Model - View - Controller)

MVC 패턴은 애플리케이션을 모델(Model), 뷰(View), 컨트롤러(Controller)의 세 가지 역할로 나누어 구성하는 디자인 패턴입니다.

● 모델(Model)

모델은 애플리케이션의 핵심 데이터와 그 데이터를 처리하는 로직을 담당합니다. 데이터베이스, 상수, 변수 등이 이에 해당하며, 컨트롤러를 통해 데이터를 생성, 수정, 삭제합니다. 뷰나 컨트롤러에 의존하지 않고 독립적으로 존재합니다.

● 뷰(View)

뷰는 사용자 인터페이스(UI)를 구성합니다. 예를 들어 입력 박스, 체크박스, 버튼과 같이 사용자가 직접 눈으로 보거나 상호작용하는 요소들이 뷰에 해당합니다. 뷰는 데이터를 직접 처리하지 않고, 데이터를 모델로부터 전달받아 화면에 표시하는 역할을 합니다.

● 컨트롤러(Controller)

컨트롤러는 뷰와 모델 사이를 중재하는 역할을 합니다. 사용자의 입력 이벤트(클릭, 입력 등)를 처리하고, 적절한 모델을 갱신하거나 뷰를 업데이트합니다. 메인 로직을 처리하는 중심 축이라고 볼 수 있습니다.


MVC 패턴의 장점

  1. 역할이 명확히 분리되어 있어 유지보수 및 개발 효율이 높습니다.
  2. 뷰와 모델이 분리되어 있어 재사용성과 테스트가 용이합니다.
  3. 규모가 큰 애플리케이션에 적합하며 확장성이 좋습니다.

MVC 패턴의 단점

  • 애플리케이션이 복잡해질수록 모델과 뷰 사이의 간접적인 의존 관계가 생기고, 구조가 뒤얽힐 수 있습니다. 특히 뷰가 모델을 직접 참조하거나 변경하게 되면 의존성이 증가하게 됩니다.

대표적인 프레임워크

  • Java: Spring Framework
  • Python: Django
  • JavaScript: Express.js

MVP 패턴(Model - View - Presenter)

MVP 패턴은 MVC 패턴에서 컨트롤러가 **프레젠터(Presenter)**로 대체된 구조입니다. 가장 큰 특징은 **뷰(View)**와 **프레젠터(Presenter)**가 1:1 관계를 가진다는 점입니다.

● Presenter

Presenter는 사용자 인터페이스 로직을 처리하며, 뷰와 모델 간의 완전한 분리를 가능하게 합니다. 뷰는 가능한 한 단순하게 유지되며, 모든 로직은 프레젠터가 담당합니다. 뷰는 프레젠터에 대한 인터페이스만 알고 있어 테스트가 용이합니다.

MVP 패턴의 특징

  • 뷰와 프레젠터가 강한 결합을 가지기 때문에 뷰당 프레젠터가 하나씩 필요합니다.
  • 테스트 코드 작성이 수월하며, 복잡한 UI 로직을 분리하기에 좋습니다.

MVVM 패턴(Model - View - ViewModel)

MVVM 패턴은 MVC 패턴에서 컨트롤러가 뷰모델(ViewModel)로 대체된 구조입니다. 뷰(View)뷰모델(ViewModel) 간에는 양방향 데이터 바인딩이 존재합니다. 이 구조는 특히 UI와 데이터 상태가 밀접하게 연동되는 애플리케이션에 적합합니다.

ViewModel

ViewModel은 뷰의 상태와 동작을 관리하며, 뷰와 모델 간의 중간 매개체 역할을 합니다. 뷰모델은 커맨드(Command)와 바인딩(Binding) 개념을 통해 뷰와 동기화됩니다.

  • 데이터 바인딩: 모델의 데이터가 변경되면 자동으로 뷰에 반영되고, 뷰의 입력도 모델에 자동으로 전달됩니다.
  • 커맨드: 버튼 클릭 등 여러 UI 요소에 대한 이벤트 처리를 하나의 액션 단위로 묶는 기법입니다.

MVVM 패턴의 장점

  • 코드의 분리도가 높고, 뷰에 대한 테스트가 매우 용이합니다.
  • 데이터 바인딩을 통해 코드량이 줄고 생산성이 향상됩니다.

MVVM 패턴의 단점

  • 데이터 바인딩을 제대로 이해하지 않으면 디버깅이 어려울 수 있습니다.
  • 단순한 프로젝트에 적용할 경우 오히려 복잡도가 증가할 수 있습니다.

대표적인 프레임워크

  • JavaScript: Vue.js, Angular
  • .NET: WPF, Xamarin
  • Kotlin: Jetpack Compose, Android ViewModel

패턴핵심 구조특징대표 프레임워크
MVCModel - View - Controller역할 분리, 대규모에 적합Spring, Django
MVPModel - View - Presenter테스트 용이, 강한 1:1 관계Android MVP
MVVMModel - View - ViewModel양방향 바인딩, UI 중심 앱에 적합Vue, WPF, Jetpack Compose

각 패턴은 목적과 사용하는 플랫폼에 따라 다르게 적용됩니다. 프로젝트의 규모, 테스트 요구사항, UI 복잡성 등을 고려하여 적절한 아키텍처 패턴을 선택하는 것이 중요합니다.

0개의 댓글