뷰 모델
정의
뷰 모델(View Model)은 소프트웨어 아키텍처 패턴인 MVVM(Model‑View‑ViewModel)에서 사용되는 구성 요소이다. 사용자 인터페이스(UI)인 View와 비즈니스 로직 및 데이터 관리 역할을 하는 Model 사이의 중간 계층으로, View가 필요한 데이터를 제공하고 UI 상태를 관리한다. 뷰 모델은 보통 데이터 바인딩(data binding) 메커니즘을 통해 View와 연결되어, View가 직접 Model에 접근하지 않도록 구조화한다.
주요 특징
| 특징 | 설명 |
|---|---|
| 양방향 데이터 바인딩 | View와 뷰 모델 간에 데이터가 자동으로 동기화되어 UI 업데이트가 간소화된다. |
| 상태 관리 | UI 상태(예: 로딩 여부, 오류 메시지)를 뷰 모델이 보유하고, View는 이를 관찰한다. |
| 비동기 처리 | 네트워크 호출이나 파일 I/O 등 비동기 작업을 뷰 모델에서 수행하고, 결과를 View에 전달한다. |
| 테스트 용이성 | UI 로직이 뷰 모델에 캡슐화되므로 단위 테스트가 비교적 쉬운 구조를 제공한다. |
| 플랫폼 독립성 | 뷰 모델은 UI 프레임워크와 독립적으로 설계될 수 있어, 동일한 로직을 여러 플랫폼에서 재사용 가능하다. |
역사·어원
- 어원: “View Model”은 영어 단어 view(시각, 화면)와 model(모델)의 결합형으로, UI(View)와 데이터(Model)를 연결하는 모델이라는 의미를 담고 있다.
- 배경: MVVM 패턴은 2005년 마이크로소프트가 WPF(Windows Presentation Foundation) 프레임워크와 함께 제안한 이후, iOS, Android, 웹 프론트엔드(예: Vue.js, React) 등 다양한 환경에서 채택되고 있다.
사용 예시
- Android: Jetpack Compose와 Android Architecture Components에서
ViewModel클래스를 상속받아 UI 상태와 비즈니스 로직을 구현한다. - .NET: WPF 및 Xamarin.Forms에서
INotifyPropertyChanged인터페이스를 구현한 뷰 모델이 View와 바인딩된다. - Web: Vue.js의
data와computed속성을 이용해 MVVM 형태로 UI와 데이터를 연결한다.
관련 개념
- Model: 애플리케이션의 핵심 비즈니스 로직과 데이터 구조를 담당한다.
- View: 사용자와 직접 상호작용하는 UI 요소이며, 뷰 모델에 정의된 데이터를 표시한다.
- Presenter: MVP(Model‑View‑Presenter) 패턴에서 사용되는 구성 요소로, 뷰 모델과 역할이 유사하지만 바인딩 방식이 다르다.
참고 문헌(주요 출처)
- Microsoft Docs, MVVM pattern (https://learn.microsoft.com/en-us/previous-versions/msp-n-p/ff923530(v=pandp.10))
- Android Developers, ViewModel (https://developer.android.com/topic/libraries/architecture/viewmodel)
- Evans, J., Domain-Driven Design (2003) – UI와 도메인 로직 분리를 강조함.
※ 본 내용은 널리 인정받는 소프트웨어 공학 문헌 및 공식 개발자 문서를 기반으로 작성되었으며, 확인되지 않은 추측은 포함하지 않았다.