MVVM패턴, AAC(Android Architecture Components)

jeunguri·2022년 6월 12일
0

MVVM 패턴


구성요소

  1. Model
  2. View
  3. ViewModel

View는 ViewModel을 알지만, ViewModel은 View를 알지 못한다.
ViewModel은 Model을 알지만, Model은 ViewModel을 알지 못한다.

이런 구조를 통해 ViewModel과 Model이 View로부터 독립적인 형태를 만들어서
UI로부터 비즈니스 로직과 프레젠테이션 로직을 분리하는 데 목적이 있다고 할 수 있다.

View

View의 역할은 UI에 관련된 것을 다루는 것이다. 사용자가 스크린을 통해 보는 것에 대한 구조,
레이아웃, 형태를 정의하는 것이다.
View는 UI 로직을 포함하되, 비즈니스 로직은 포함하지 말아야 한다.

ViewModel

ViewModel의 역할은 View가 사용할 메서드와 필드를 구현하고, View에 상태변화를 알리는 것이다.
ViewModel에서 제공하는 메서드와 필드가 UI에서 제공할 기능을 정의한다.
쉽게 말해 View가 ViewModel에 구독을 하게되고 ViewModel의 상태가 변경되면 그 이벤트를 받아 UI를 갱신한다.

일반적으로 ViewModel과 Model은 1:n 관계를 형성한다. ViewModel은 View가 쉽게 사용할 수 있도록
Model의 데이터를 가공해서 View에 제공한다.
예를 들어, View에서 서로 다른 두 Model의 데이터를 활용한 데이터가 필요하다면 View에서 Model의
값을 조작해서 사용하는 것이 아니라, ViewModel에서 두 Model의 데이터를 가공하고 View에서는 오직
UI만 다루도록 해야한다.

Model

Model은 비즈니스 로직과 유효성 검사와 데이터를 포함하는 앱의 도메인 모델로 생각할 수 있다.
쉽게 말해 Model은 앱에서 사용할 데이터에 관련된 행위와 데이터를 다룬다.



AAC (Android Architecture Components)


ACC(Android Architecture Components)는 테스트와 유지보수가 쉬운 앱을 디자인할 수 있도록 돕는 라이브러리의 모음이다.

ViewModel

앱의 생명주기를 고려해 UI 관련 데이터를 저장하고 관리하는 컴포넌트이다.

그림에서 보듯이 Activity가 생성되고 파괴되기 전까지 ViewModel은 파괴되지 않고 유지된다.
따라서 화면 회전과 같은 View가 파괴되고 새로 그려지는 과정에서도 데이터를 보존할 수 있다.

LiveData

식별 가능한 데이터 홀더 클래스로 다른 앱 컴포넌트의 생명주기를 인식하며, 이를 통해 활성 상태에 있는 앱 컴포넌트 옵저버에게만 업데이트 정보를 알린다.

LiveData를 사용하면 다음과 같은 장점이 있다.

  • 생명주기 상태가 변경될 때마다 Observer 객체에 알린다. 또 앱 데이터의 변경이 발생할 때마다 관찰자에게 알려 UI를 업데이트할 수 있도록 한다.
  • Observer는 생명주기 객체에 결합되어 있으며 연결된 객체의 생명주기가 끝나면 자동 삭제되어 메모리 누수가 없다.
  • 활동이 백스택에 있을 때를 비롯해 Observer가 비활성 상태에 있으면 어떤 LiveData 이벤트도 받지 않아 중지된 활동으로 인한 비정상 종료가 없다.
  • 컴포넌트가 비활성화되면 다시 활성화될 때 최신 데이터를 수신한다.
  • 기기회전과 같은 구성 변경으로 인해 Activity나 Fragment가 다시 생성되면 최신 데이터를 즉시 받게 된다.

Room

Room 라이브러리는 SQLite에 추상화 레이어를 제공하여 원활한 DB 액세스를 지원하고 SQLite를 완벽히 활용할 수 있게 하는 라이브러리이다.




참고

0개의 댓글