MVVM Architecture

박재원·2022년 1월 20일

그전에 MVC, MVP 와 차이점

목적은 하나

  • MVVM ?

목적 : 비즈니스 로직과 UI를 명확히 분리하여 유지보수성과 테스트 용이성을 높인다.

View

  • 사용자 입력을 ViewModel로 전달하고
  • ViewModel의 상태(State, LiveData)를 관찰하여 UI를 갱신

View Model

  • View와 Model 사이의 중간 계층
  • UI 로직과 상태(State)를 관리
  • View의 생명주기에 영향을 받지 않음 (Configuration 변경에도 데이터 유지)

Model

  • 비즈니스 로직과 데이터 관리 담당 담당
  • Repository, DAO, Retrofit 등 실제 데이터 소스와의 연결
  • Android Jetpack MVVM 적용

  • Android AAC(Android Architecture Components)중에 ViewModel과 LiveData는 앱을 MVVM구조로 디자인할 수 있도록 돕는 라이브러리
  • AAC를 사용하면 MVVM 구조로 구현하는데 도움

ViewModel

  • View에 표시할 데이터를 보관하고 관리하는 역할
  • View가 파괴되어도(Activity 재생성 등) 데이터가 유지됨
  • Coroutine과 함께 사용하면 비동기 처리에 안전
  • 생명주기 범위를 자동 관리 (viewModelScope 제공)

LiveData

  • Lifecycle을 인식하는 Observable 데이터 홀더
  • View가 활성 상태(STARTED, RESUMED) 일 때만 데이터 업데이트
  • 화면 회전, 다크모드 변경 등 구성 변경 시에도 데이터 유지

장점

메모리 관리 자동화
→ LifecycleOwner가 Destroy되면 자동으로 Observer 해제

UI 상태 보존
→ ViewModel + LiveData 조합으로 구성 변경에도 데이터 유지

코드 단순화
→ 수동적인 UI 업데이트 코드를 줄이고, 상태 기반 UI 구현 가능

profile
Android developer.

0개의 댓글