본문 바로가기

안드로이드/디자인패턴

[디자인 패턴] MVVM

디자인 패턴은 MVC를 시작으로 MVP을 거쳐 MVVM로 발전해왔다.

 

그러나 세가지 방법 모두 서로의 장단점이 있기 때문에 모두 사용되고 있으며, 프로젝트의 방향성에 맞는 디자인 패턴을 선택하여 사용하면 된다.

 

MVVM 패턴

MVVM 모델은 기존의 MVC 모델과 MVP 모델에서의 View와 Controller/Presenter 사이에서의 강한 의존성을 약화시킨 모델이다.

 

기존에는 Controller/Presenter에서 UI 조작이 일어났다면, MVVM 모델에서의 ViewModel은 UI를 조작하지 않는다.

 

대신 View에서 ViewModel을 관찰하며 UI를 업데이트를 하는데 이를 Observe라 한다.

 

필요성

안드로이드는 사용할 수 있는 리소스가 제한적이다.

 

이로 인해 운영체제는 언제든 앱 구성 요소를 제거할 수 있으며, 사용자 또한 강제 종료가 가능하다.

 

이처럼 강제 종료로 인해 데이터 손실이 일어날 수 있다.

 

LifeCycle에서는 이에 대한 대처 방안으로 데이터와 관련된 객체를 제공하고 있지만, 가장 바람직한 방법은 앱 구성 요소에 데이터 또는 상태를 저장하지 않는 것이다.

 

ViewModel LifeCycle

 

출처 - 안드로이드 공식문서

 

MVVM 모델에서는 데이터 손실을 효과적으로 막기 위해 ViewModel의 Lifecycle을 Activity Lifecycle보다 길게 만들었다.

 

따라서 ViewModel에 데이터를 저장함으로써 View에 보여지는 데이터 손실을 최소화 할 수 있다.

 

자세한 내용은 안드로이드 공식 문서를 참고 바랍니다.

https://developer.android.com/topic/libraries/architecture/viewmodel?hl=ko

'안드로이드 > 디자인패턴' 카테고리의 다른 글

[디자인 패턴] MVC 패턴  (1) 2023.11.03