MVVM 패턴

이윤설·2025년 2월 27일
0

안드로이드 연구소

목록 보기
23/33

MVVM의 구성 요소

MVVM은 안드로이드 개발에서 많이 사용되는 아키텍처 패턴 중 하나로, Model, View, ViewModel로 구성되어 있다.

이 패턴은 코드의 재사용성, 테스트 용이성, 유지보수성을 높이기 위해 설계되었으며,
UI 로직과 비즈니스 로직을 분리하여 복잡한 프로젝트에서도 모듈화가 가능하게 도와준다.

이 패턴은 크게 세 가지 주요 컴포넌트로 나눠진다.

  1. Model: 애플리케이션의 데이터와 비즈니스 로직을 담당한다.
    서버에서 데이터를 가져오거나 로컬 데이터베이스에서 데이터를 조작하는 역할을 수행한다.
  2. View: 사용자에게 보이는 화면, 즉 UI를 담당한다. View는 데이터를 화면에 표시하는 역할만 하고, 비즈니스 로직을 처리하지 않는다.
  3. ViewModel: View와 Model을 연결하는 중간 다리 역할을 한다.
    Model에서 데이터를 받아와서 View에 맞게 가공한 후, View에 전달한다.
    View는 ViewModel을 통해서만 데이터를 받아오고, ViewModel은 Model에서 직접 데이터를 받아온다.

동작흐름

  1. View는 사용자의 입력을 받고, 그 입력을 ViewModel에게 전달한다.
  2. ViewModel은 Model에 요청하여 데이터를 가져오거나 업데이트 한다.
  3. Model은 네트워크, 로컬 데이터베이스 또는 다른 데이터를 처리한 후 ViewModel에 결과를 반환한다.
  4. ViewModel은 LiveData, StateFlow 등을 통해 View에 변경된 데이터를 알림으로써 UI를 갱신한다.

예시: 티비와 리모컨

  • View (TV): TV는 화면을 보여주는 장치로, 우리가 볼 수 있는 화면을 나타낸다.
    화면을 켜고 끄는 버튼, 채널 변경 버튼 등을 가진 UI가 View에 해당한다.
    여기서 TV는 화면을 어떻게 구성할지, 어떤 방송을 보여줄지는 신경 쓰지 않는다.
    그냥 시청자가 원하는 방송을 화면에 띄워주는 역할만 할 뿐이다.

  • ViewModel (리모컨): 리모컨은 우리가 원하는 채널을 선택하는데 사용되는 도구이다.
    TV를 켜고 끄는 명령을 ViewModel이 대신하고, 리모컨은 그 역할을 한다. 리모컨은 우리가 원하는 방송을 선택하면, 그 방송을 TV에 전달할 수 있도록 가공한다. 우리가 리모컨에 채널을 입력하면 ViewModel이 그 채널을 Model(방송국)에서 가져오고, 이를 TV(View)에 전달한다.

  • Model (방송국): 방송국은 TV 프로그램이나 방송 내용을 결정하는 곳이다.
    방송국이 제공하는 콘텐츠가 바로 데이터이며, 이 데이터는 TV에서 보여줄 수 있는 형태로 가공된다. 방송국은 데이터를 제공하지만, TV가 어떻게 화면을 그릴지는 신경 쓰지 않는다.


profile
화려한 외면이 아닌 단단한 내면

0개의 댓글

관련 채용 정보