MVVM은 안드로이드 개발에서 많이 사용되는 아키텍처 패턴 중 하나로, Model, View, ViewModel로 구성되어 있다.
이 패턴은 코드의 재사용성, 테스트 용이성, 유지보수성을 높이기 위해 설계되었으며,
UI 로직과 비즈니스 로직을 분리하여 복잡한 프로젝트에서도 모듈화가 가능하게 도와준다.
이 패턴은 크게 세 가지 주요 컴포넌트로 나눠진다.
View (TV): TV는 화면을 보여주는 장치로, 우리가 볼 수 있는 화면을 나타낸다.
화면을 켜고 끄는 버튼, 채널 변경 버튼 등을 가진 UI가 View에 해당한다.
여기서 TV는 화면을 어떻게 구성할지, 어떤 방송을 보여줄지는 신경 쓰지 않는다.
그냥 시청자가 원하는 방송을 화면에 띄워주는 역할만 할 뿐이다.
ViewModel (리모컨): 리모컨은 우리가 원하는 채널을 선택하는데 사용되는 도구이다.
TV를 켜고 끄는 명령을 ViewModel이 대신하고, 리모컨은 그 역할을 한다. 리모컨은 우리가 원하는 방송을 선택하면, 그 방송을 TV에 전달할 수 있도록 가공한다. 우리가 리모컨에 채널을 입력하면 ViewModel이 그 채널을 Model(방송국)에서 가져오고, 이를 TV(View)에 전달한다.
Model (방송국): 방송국은 TV 프로그램이나 방송 내용을 결정하는 곳이다.
방송국이 제공하는 콘텐츠가 바로 데이터이며, 이 데이터는 TV에서 보여줄 수 있는 형태로 가공된다. 방송국은 데이터를 제공하지만, TV가 어떻게 화면을 그릴지는 신경 쓰지 않는다.