[Android] 아키텍처 패턴 (Architecture Pattern), MVVM ?

hyooosong·2022년 1월 22일
0
post-thumbnail

✨ 아키텍처 패턴 (Architecture Pattern), MVC에 대해 알아보기
✨ 아키텍처 패턴 (Architecture Pattern), MVP에 대해 알아보기
이전 MVC, MVP 포스팅이 궁금하시다면 클릭하세요 :)

MVVM 패턴

Model, View, ViewModel

모든 입력은 View로 전달됨
ViewModel은 View를 따로 참조하지 않기 때문에 독립적
ViewModel : View = 1 : n -> 둘 사이 의존성 없음

  • Model
    - ViewModel이 요청한 데이터를 반환함
    - Room 같은 DB 사용이나, Retrofit을 통한 API 호출
  • View
    - UI를 담당(Activity, Fragment 등)
    - 사용자의 Action을 받음 (버튼 클릭, 텍스트 입력 등)
    - ViewModel의 데이터를 관찰하여 UI 갱신
  • ViewModel
    - View 와 Model 사이의 매개체
    - View를 나타내기 위한 Model이자, Presentation Logic 처리
    - View가 요청한 데이터를 Model로 요청함
    - Model로부터 요청한 데이터를 받음

사용자 Action 순서

  1. View : 사용자 Action 받음
  2. View → ViewModel : 사용자 Action에 따른 데이터 갱신 요청
  3. ViewModel → Model : 데이터 갱신 요청
  4. Model : 데이터 갱신
  5. View → ViewModel : ViewModel의 데이터를 관찰하다가 값이 바뀌면 UI 갱신

안드로이드에서의 MVVM 은?

  • 간편하게 적용할 수 있게 구글에서 AAC 제공

AAC (Android Architecture Component)

  • 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리 모음 (ViewModel, LiveData, Room Repository ...)

그 중 MVVM에 가장 필요한 ViewModel과 LiveData에 대해 알아보자!

1. ViewModel

  • UI 관련 데이터를 저장하고 관리하는 컴포넌트
  • 화면 변화 시에도 사라지지 않은 데이터를 가지고 있음

2. LiveData

  • View가 ViewModel을 관찰할 때, 그 관찰 대상이 되는 데이터 홀더 클래스

  • 활성 상태에 있는 앱 컴포넌트 Observer에만 업데이트 정보 알림
    (메모리 릭 방지)

    LiveData의 장점

    • 메모리 릭 방지
    • 최신 데이터 유지
    • 중지된 활동으로 인한 비정상 종료 없음 등

MVVM 패턴의 장단점

장점
- View가 실시간으로 데이터를 관찰하여 UI 업데이트 함
- 생명주기로부터 안전하여 메모리 릭 방지
( ViewModel의 데이터를 참조하기 때문에 Activity/Fragment 생명주기를 따르지 않음 )
- 기능별 모듈화가 잘 되어있어 유지보수 용이

단점
- ViewModel의 설계가 어려움


Example
추후 업뎃 예정


Reference
[Android] 깔쌈하게 MVVM패턴과 AAC 알아보기
안드로이드 아키텍처 패턴 - MVVM이 뭘까?

1개의 댓글

comment-user-thumbnail
2022년 12월 29일

중간에 사진이 엑박떠요ㅠㅠ

답글 달기