어떤 언어를 사용하든 간에, 어플리케이션의 성능과 유지보수를 용이하게 하는 코드를 짜기 위해 개발자는 항상 노력하여야 한다. 특히 Kotlin을 이용하여 안드로이드 어플리케이션을 개발할 때에는, 좋은 디자인 패턴이 성능 및 유지보수(안드로이드는 코드가 상당히 많고 복잡하기 때문..!)에 결정적인 영향을 미칠 수 있는데, 오늘은 안드로이드 어플리케이션의 기본 디자인 패턴이 되는 MVVM 패턴에 대해 알아보려고 한다.

 

MVVM 패턴의 정의

Model + View + ViewModel을 합친 용어로 MVVM 패턴이라 한다. 사실 패턴의 구성을 보면, Model - ViewModel - View 순서가 맞다. (그럼 MVMV 패턴이라 하는게 맞지 않나?)

MVVM 패턴 도식화 / 출처: 밍맹의 생각날때 적는 블로그

그렇다면 View, ViewModel Model이 각각 뭐를 칭하는 지에 대해 알아보자!

 

- View : 사용자가 직접적으로 보는 화면. UI 라고 보면 된다. Android에서는 Activity 또는 Fragment에 해당한다고 보면 된다. 화면에 무엇을 그릴 지 결정하고, 사용자와 직접적으로 상호작용하는 부분으로, 데이터의 변화를 감지하기 위한 Observer를 가지고 있다.

 

- ViewModel : 뷰모델은 UI를 위한 데이터를 가지고 있다. View와 분리된 구조를 가지기 때문에, 액티비티나 프래그먼트의 생명주기에 영향을 받지 않는다. (뷰모델은 어플리케이션이 종료될 때까지 살아있음.) View와 Model 간의 데이터 처리/중개를 담당한다.

 

- Model : 어플리케이션에서 사용되는 데이터데이터 조작 부분을 담당한다.
(서버로부터 받아온 데이터를 변수 또는 자체DB(ROOM 등)에 저장 또는 그 데이터를 만지작(?)거리는 부분.)

 

 

동작 순서

  1. 사용자의 Action들이 View를 통해 들어온다.
  2. View에 Action이 들어오면, Command 패턴으로 ViewModel에 Action을 전달한다.
  3. ViewModel은 Model에게 데이터를 요청한다.
  4. Model은 ViewModel에게 요청받은 데이터를 응답한다.
  5. ViewModel은 응답 받은 데이터를 가공하여 저장한다.
  6. View는 ViewModel과 Data Binding하여 화면에 나타낸다.

 

"그래서 MVVM 패턴을 왜 쓴다고?"

결론적으로 말하면 이렇다. UI와 로직의 분리이다. 화면에 보여지는 UI와 실제적인 데이터를 처리하는 로직을 분리함으로써, 유지보수 및 개발 효율을 높일 수 있다.

 뿐만 아니라, 액티비티와 프래그먼트로부터 분리시킬 수 있어, 액티비티 및 프래그먼트의 수명주기로부터 자유로워지는 것을 의미한다. 수명주기로부터 자유로워지면, Singleton(싱글톤) 패턴처럼 사용이 가능해져, 프래그먼트들 사이에서 ViewModel을 활용한 데이터 공유 또한 쉬워지게 된다. 이는 어플리케이션의 성능과도 직결된다.

 

 

참고

https://kangmin1012.tistory.com/15?category=879935 

 

자 이제 무엇을 할것이냐? (MVVM 패턴)

지금까지 나는 개발을 할 때 activity에 모든 코드를 때려 박았다. 어떻게 보면 대가리만 큰 코드가 되었다고 할 수 있다. 이렇게 activity에 모든 코드를 넣어버리면 자연스럽게 어플은 무거워지고,

kangmin1012.tistory.com

https://aonee.tistory.com/48

 

[Android] MVVM 패턴 적용해보며 배우기(1) - ACC, MVC와 MVVM비교, MVVM 장점

🔥목차🔥 🍓 안드로이드 아키텍처 컴포넌트 (AAC) 🍓 MVC 와 MVVM 차이점 🍓 MVVM 패턴 🍓 MVVM 장점 🐥 실습 - MVVM 패턴, Repository, BataBinding 적용 이어지는 시리즈 👉 [Android] MVVM 패턴 적용해보며

aonee.tistory.com

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기