본문 바로가기
Android

[Android] MVVM 디자인 패턴

by JongSeok 2022. 12. 31.

디자인 패턴

디자인 패턴이란 개발을 보다 체계적이고 효율적인 유지·보수를 위해 큰 틀에서
'이러이러한 형식으로 개발하자'라는 일종의 약속으로 볼 수 있습니다.
안드로이드 개발에 사용되는 대표적인 디자인 패턴에는 MVP, MVC, MVVM 등이 있습니다.
몇 차례 프로젝트를 진행하면서 Kotlin Class파일과 xml파일이 많아지다 보니 디자인패턴의 필요성을 절실히 느꼈습니다.
또한, 많은 채용공고에서 MVVM 아키텍처 적용 가능한 개발자를 요구하는 것으로 보아 실무에서도 많은 프로젝트에 MVVM 패턴이 적용되고 있다고 느꼈습니다.

이번 포스팅에서는 MVVM 디자인 패턴에 대해 공부해 보겠습니다.


MVVM 디자인 패턴

'MVVM'은 Model - View - ViewModel로 이루어진 디자인 패턴입니다.
이때, 각각의 역할은

  • View
    • 사용자에게 보여지는 화면. 즉, 사용자와 상호작용하며 UI를 처리하는 역할
    • 사용자의 입력이나 데이터를 수정해야 할 경우 ViewModel과 소통하며 UI를 수정합니다.
  • ViewModel
    • ViewModel을 이어주는 중간단계 역할
    • UI를 관리하는 View와 데이터를 관리하는 Model 사이의 요청/응답을 ViewModel이 전달
  • Model
    • 서버나 데이터베이스의 데이터를 관리하는 역할

MVVM 동작 순서

  1. 사용자가 앱을 사용하며 발생한 이벤트를 View가 확인
  2. View는 ViewModel에게 이벤트 전달
  3. ViewModel은 Model에게 이벤트에 따른 데이터를 요청하고, Model은 ViewModel에게 요청에 따른 데이터 전달
  4. 응답을 받은 ViewModel은 데이터를 가공하여 View에게 전달
  5. View는 DataBinding을 통해 화면 갱신

로직의 흐름을 View ☞ ViewModel ☞ Model ☞ ViewModel ☞ View 의 순서로 이해할 수 있습니다.

장단점

  • 장점
    • View와 Model 사이의 의존성이 없습니다.
    • View는 ViewModel을 알지만 ViewModel은 View를 알지 못하고,
      ViewModel은 Model을 알지만 Model은 ViewModel을 알지 못합니다.
    • 즉, 각 모듈들이 한 방향으로만 독립적으로 존재하기 때문에 개별적으로 개발할 수 있습니다.
  • 단점
    • 적용하기 위해 여러 부분의 많은 이해가 필요합니다.
    • 규모가 작은 프로젝트에 적용 시 오히려 지나치게 복잡한 설계구조를 가질 수 있습니다.


정리하자면 MVVM 패턴을 적용하지 않더라도 앱을 개발하는 데에는 문제가 없습니다.
하지만 앱을 일회성으로 만들고 그만두는 것이 아니라, 프로젝트 규모가 커지고 다른 개발자와 협업하여 앱을
효율적으로 유지·보수하기 위해서는 아키텍처를 적용할 필요가 있습니다.
MVVM 패턴을 적용해 앱을 개발하기 위해서는 DataBinding, LifeCycle, LiveData, Room 등 구글에서 권장하는
디자인 패턴인 AAC(Android Architecture Component)의 이해가 요구됩니다.

아직 관련된 용어 중 낯선 용어가 훨씬 많다.
간단한 프로그램에 적용해보며 MVVM 패턴으로 앱을 개발하는 것에 익숙해져야겠따...

728x90
반응형