Architecture) MVVM 패턴이란?
MVVM 패턴이란?
M
odel,V
iew,V
iewM
ode
View
는 오직 시각적인 요소(레이아웃, 애니매이션 그리고 UI 요소들에 대한 초기화 작업 코드들)로만 이루어져야 하고, View Controller가 View가 된다.ViewModel
은 View의 각 UI 요소들에 대한 인터페이스를 제공하며, 중간 역할을 한다.
다이어그램
Controller를 빼고 ViewModel을 추가한 패턴이다.
View의 UI 요소들과 ViewModel의 인터페이스를 연결시키는 작업을
Binding(바인딩-연결고리)
이라고 한다.ViewModel은 Model에 변화를 주고, ViewModel을 업데이트하는데 이 때, 바인딩으로 인해 View도 업데이트 된다.
예를들어,
Date를 String으로 변환하는 작업은 ViewModel에서 진행되고 View에서는 이에 맞춰 갱신만 일어나게 된다.
그렇기 때문에 View가 어떻게 구성되어 있는지와 상관없이 View의 비즈니스 로직에 대해서테스팅이 가능
하며,바인딩으로 인해 코드 양이 많이 줄어든다는 장점
이 있다.
MVVM에서 바인딩을 직접 작성하지 않으려면?
- KVO 기반 라이브러리를 사용하거나
- Delegation
- Property Observer
- RxSwift같은 Reactive Programming을 사용해야한다.
이것이 MVVM하면 RxSwift를 주로 떠올리는 이유이다.
참고
Architecture) MVVM 패턴이란?