MVVM 패턴
MVP 패턴이란? - Model, View, ViewModel
MVC에서 C에 해당하는 Controller가 ViewModel로 교체된 패턴
![https://user-images.githubusercontent.com/88873302/226187440-672dae97-6807-403b-857d-377a5c9201b5.png](https://user-images.githubusercontent.com/88873302/226187440-672dae97-6807-403b-857d-377a5c9201b5.png)
ViewModel
- View를 표현하기 위해 만들어진 View를 위한 Model
- MVC 패턴과는 다르게
커맨드
와 데이터 바인딩
을 가진다
커맨드
: 여러 가지 요소에 대한 처리를 하나의 액션으로 처리할 수 있게 하는 기법
데이터 바인딩
: 화면에 보이는 웹 브라우저의 메모리 데이터를 일치시키는 기법으로, ViewModel을 변경하면 View가 변경된다
- View와는 Binding을 하여 연결 후 View에게서 액션을 받고 또한 View를 업데이트한다
- View와 ViewModel 사이의 양방향 데이터 바인딩을 지원하며 UI를 별도의 코드 수정 없이 재사용할 수 있다
MVVM 패턴의 동작 방식
- View에 입력이 들어오면 ViewModel에게 명령한다
- ViewModel은 필요한 데이터를 Model에게 요청한다
- Model은 ViewModel에게 요청된 데이터를 응답한다
- ViewModel은 응답 받은 데이터를 가공해서 저장한다
- View는 ViewModel과의 Data Binding으로 인해 자동으로 갱신된다
MVVM의 장단점
장점
- View와 Model의 독립성
- 독립성을 유지하기 때문에 효율적인 유닛 테스트 가능
- View와 ViewModel을 바인딩하기 때문에 코드 양⬇
- View와 ViewModel의 관계는 N:1
단점
- 데이터 바인딩이 필수적으로 요구된다
- 복잡해질수록 Controller처럼 ViewModel이 빠르게 비대해진다
- 표준화된 틀이 존재하지 않아 사람마다 이해가 다르다
참고 자료