MVC, MVP, MVVM 이 무엇인가? UI와 로직의 분리가 목적인 패턴들
특징
- 불필요한 종속 관계를 줄임
- 잠재적으로 스파게티 코드 방지

[MVC] Model View Controller
mvc 디자인은 각 레이어의 기능을 제한 → 단일책임원칙을 준수
모델 : 애플리케이션 데이터 관리
- 값을 보관하는 데이터 컨테이너
뷰 : 데이터를 사용자에게 표시 (UI)
컨트롤러 : 입력 및 로직 처리
- 게임 데이터를 처리하고 런타임에 값이 어떻게 변하는지 계산
- 입력을 처리하고 결과를 모델로 다시 전송
특징 : 서로 엮일 수 밖에 없다.
단점 : 모델 데이터의 변경사항을 수신하기 위한 뷰별 코드가 필요
[MVP] Model View Presenter
모델 : 데이터와 데이터를 관리하는 규칙이 포함
- 게임의 현재 상태, 게임 속성, 데이터에 대한 Logic(체력 점수 등)
- *view에 대한 정보가 없음
프레젠터
- 모델과 뷰 사이에서 중재
- 뷰에서 사용자 입력 이벤트를 처리
- 게임의 조건이 변경되면 모델을 업데이트하고 뷰를 업데이트
뷰
- 사용자에게 데이터 표시
- 사용자 상호작용 (예: 버튼클릭)을 프레젠터로 전송
- 모델은 뷰와 직접 상호작용하지 않음
- UI 로직이 있지만 게임 비즈니스 로직은 처리하지 않음
특징 : 프레젠터가 양방향으로 소통을 한다. 그리고 모델과 뷰는 서로 모르게
확장성 - 특정작업을 처리하는 부분들이 나눠져 있으면 코드 관리가 용이함
모듈성
- 한 구성 요소의 변경사항이 전체 시스템 영향을 미치지않음
- 독립적으로 개발, 테스트, 수정 가
재사용성 및 유지 관리성
[MVVM] : Model View ViewModel
- 기존 mvp에서 뷰와 컨트롤러/프레젠터 의존성을 약화
- 데이터 바인딩 : 뷰와 뷰모델 간의 데이터 바인딩을 통해 뷰모델 속성 변경이 자동으로 뷰에 반영
모델
- 비즈니스 로직에서 사용되는 데이터를 포함하는 데이터 구조
- 어떤 객체라도 될 수 있음 : ScriptableObject, Monobehaviour
뷰
- 사용자에게 데이터를 표시하고 상호작용하는 UI
- UI Toolkit에서는 USS 스타일 시트와 UXML 파일로 구성
뷰모델
- 뷰 모델 사이의 중재자 역할
- 데이터 바인딩 기능을 통해 ViewModel과 View 연결
Data Binding
- UI가 아닌 개체의 속성과 UI 요소 간의 동기화 보장
- Unity6부터 UI 툴킷은 런타임 데이터 바인딩 지원
- UI Toolkit , R3(UniRx 등) 으로 사용 가능
728x90
'디자인패턴' 카테고리의 다른 글
pub/sub Pattern (0) | 2025.05.23 |
---|---|
유니티 - Strategy Pattern (스킬 편) (0) | 2025.04.27 |
State Pattern (FSM) (0) | 2024.05.01 |
Observer Parttern (0) | 2024.04.30 |
Strategy Pattern (0) | 2024.04.27 |