본문 바로가기

ANDROID

대세인 MVVM 에 대해서

  제가 인턴으로 일했던 곳에서 우연히 요즘은 모바일 프로그램을 MVVM 패턴을 적용해서 만들더라... 유지보수가 좋고 꼭 필수될 테니 꼭 공부해둬라라는 말을 들은 적이 있었습니다. 그렇게 인턴 중에도 그 중요함을 깨닳고 원래 만들던 앱에 MVVM을 적용해보려 노력했던 적도 있으나 쉽지는 않았습니다. 하지만 꼭필수이기 때문에 알아야 한다고 생각합니다. 

 물론 다른 디자인 패턴도 있습니다. MVCMVP가 대표적이죠. 하지만 저는 복잡하게 다른들은 정리하지않고 오로지 MVVM의 대해서만 정리해보려고 합니다.

 

  

- MVVM 이란?

이 패턴을 풀어서 말하면 Model + View + View Model 입니다. 

  • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분. 간단하게 View에 표시할 데이터를 의미합니다.  

  • View : 사용자에게 보여기는 UI부분.  즉 받은 데이터를 사용자에게 보여주기위해 뿌리기만 하는 공간입니다. 

  • View Model : View를 표현하기 위해 만든 View를 위한 Model으로 View를 나타내 주기 위한 Model이자 View를 나타내기 위한 데이터 처리를 하는 부분.  즉, View에서 뿌리기 쉬운 Model로 바꿔주는 역할이라고 생각하면 쉽습니다.  하지만 중요한 점은 바꿔주는 일이 끝나더라고 View에게 억지로 명령해서 가져가게 하면 안된다는 점입니다. 

 

  1. 사용자의 Action들은 View를 통해 들어오게 됩니다.

  2. View에 Action이 들어오면 Command패턴으로 View Model에 Action을 전달합니다.

  3. View Model은 Model에게 데이터를 요청합니다.

  4. Model은 View Model에게 요청받은 데이터를 응답합니다.

  5. View Model은 응답 받은 데이터를 가공하여 저장합니다.

  6. View는 View Model과 Data Binding하여 화면을 나타냅니다.

출처: https://beomy.tistory.com/43 [beomy]

 

이 패턴의 특징은 Command패턴을 사용하여 View와 ViewModel의 의존성을 없앴고

Data Binding을 사용하여 View와 View Model 사이의 의존성을 없앴다는 점입니다.