Hans의 개발 블로그
MVVM 패턴 본문
MVVM 패턴
MVVM 패턴은 마틴 파울러의 Presentation 모델 패턴에서 파생된 디자인 패턴이다.
MVVM 패턴의 목표는 비즈니스 로직과 프레젠테이션 로직을 UI로부터 분리하는 것이다.
비즈니스 로직과 프레젠테이션 로직을 UI로부터 분리하게 되면 테스트, 유지 보수, 재사용이 쉬워진다.
구성 요소
MVVM 패턴은 이름에서 알 수 있듯이 3가지 구성요소로 구성되어 있다.
• 모델(Model)
• 뷰(View)
• 뷰 모델(View Model)
MVVM을 구성하는 3가지 요소의 역할과 책임을 이해하기 위해서는 먼저 이들 사이의 관계를 알아야 한다.
뷰는 뷰 모델을 알지만, 뷰 모델은 뷰를 알지 못한다.
뷰 모델은 모델을 알지만, 모델은 뷰모델을 알지 못한다.
1. 모델(Model)
모델은 비즈니스 로직과 유효성 검사와 데이터를 포함하는 앱의 도메인 모델로 생각할 수 있다.
쉽게 말해서, 모델은 앱에서 사용할 데이터에 관련된 행위와 데이터를 다룬다.
2. 뷰(View)
뷰는 사용자가 화면에서 보는 것들에 대한 구조, 레이아웃, 형태를 정의한다.
모델을 보이게 표현하고 사용자와 뷰의 상호 작용을 수신하여, 이에 대한 처리를 뷰와 뷰 모델의 연결을 정의하고 있는
데이터 바인딩(속성, 이벤트 콜백 함수 등)을 통하여 뷰 모델로 전달하고,
뷰모델의 상태 변화가 전달되면 화면을 갱신한다.
3. 뷰 모델(View Model)
뷰 모델은 소프트웨어 개발에서 사용자 인터페이스(UI)와 비즈니스 로직 사이의 중간 계층으로 작동하는 패턴 또는
구성 요소를 말한다.
UI와 데이터 소스(모델) 사이의 상호 작용을 관리하는 역할을 한다.
장점
뷰 모델이 모델과 뷰 사이의 어댑터로써 변경이 생겼을 때 변경을 최소화할 수 있다.
모델과 뷰 모델이 뷰로부터 독립적이다.
- 뷰 모델과 모델을 플랫폼 독립적으로 개발할 수 있다.
- 테스트하기 쉽다.
개발 기간 동안 개발자와 디자이너가 동시에 독립적으로(병렬적으로) 작업할 수 있다.
- UI 디자인이 나오지 않았더라도 미리 정의된 모델과 뷰 모델을 먼저 개발할 수 있기 때문에 병렬적인 업무 프로세스가 가능하다.
단점
거대하고 복잡한 앱을 위해서 고안된 디자인 패턴인 만큼, 소형 앱에서 사용하게 되면 오버헤드가 커진다.
앱이 너무 거대해지면 앱의 메모리 소모가 데이터 바인딩 때문에 커진다.
'개발' 카테고리의 다른 글
Chapter 1: Kotlin 소개 및 환경 설정 (2) | 2025.02.25 |
---|---|
라이브러리(Library) vs 프레임워크(Framework) 차이 (0) | 2023.06.28 |