Android/Design Pattern

[Android/Design Pattern] MVVM 디자인 패턴에 대해 알아보자!

안필버그 2022. 8. 23. 00:00
반응형

 

 

전에 MVP 에 대해 알아보았습니다.

이번에는 각각의 디자인 패턴의 단점을 보완하기 위해 만들어진 MVVM 에 대해 알아보겠습니다.

 

 

 

 

MVVM 이란?

MVVM 패턴은 Model - View - ViewModel 를 합친 용어입니다.

Model 과 View 가 존재하고, Controller, Presenter 대신 ViewModel 이 존재합니다.

MVVM 의 핵심은 화면을 만드는 코드와 뒤에 데이터를 처리하는 코드를 분리합니다.

이렇게 되면 하나의 소프트웨어를 최대한 기능적으로 작은 단위로 나누어 개발하므로

테스트가 쉽고, 큰 프로젝트도 상대적으로 관리하기 좋은 구조입니다.

 

 

 

 

MVVM 의 구조

 

 

 

구조

   1. Model

  • 데이터에 대한 상태 처리나 비즈니스 로직을 처리합니다.
  • UI 에 대한 로직은 가지지 않습니다.
  • DB 나 API 접근에 대한 처리를 합니다. (1번과 동일한 내용)
  • MVC 의 Model 과 역할이 동일합니다.

 

 

 

   2. View

  • 화면에 표현되는 레이아웃을 정의합니다. ( Activty, Fragment )
  • ViewModel 이 가진 데이터 값이 DataBinding 을 통해 자동적으로 반영되므로 따로 값을 반영하여 구현할 필요가 없습니다.

 

 

 

   3. ViewModel

  • View 와 Model 사이의 매개체 역할을 합니다.
  • View 의 상태, UI 에 대한 로직을 구현합니다.
  • View 와 ViewModel 은 MVP 와 다르게 1:N 관계를 가질 수 있으며 여러 개의 Fragment 가 하나의 ViewModel 을 가질 수 있습니다.

 

 

 

 

MVVM 의 특징

MVVM 패턴은 databinding 을 사용해 뷰에 참조하기 때문에

View 와 Model 사이에 의존성이 없습니다.

ViewModel 과 View 는 1:N 관계입니다.

 

 

 

 

 

 

MVVM 의 장점?

  • View 와 Model 사이에 의존성이 없습니다.
  • 또한 View 와 ViewModel 사이에 의존성이 존재하지 않아 독립적이므로 모듈화가 가능합니다.
  • 그래서 모듈간의 의존성을 분리해 유지보수가 용이해지는 장점이 있습니다.
  • 중복되는 코드도 모듈화 할 수 있습니다.
  • AAC 등 여러 라이브러리를 접목하여 개발이 가능합니다.

 

 

 

 

 

 

MVVM 의 단점?

  • ViewModel 설계가 복잡하다는 단점이 있습니다.

 

 

 

 

 

 

이 글을 마치며

지금까지 MVVM 디자인 패턴에 대해 알아보았습니다.

서로 각각의 장점과 단점이 존재하고 사용하는 이유가 다르기 때문에

MVC 든, MVP 든, MVVM 이든 상황에 따라 잘 사용하면 좋을 것 같습니다.

 

또한 더 궁금한 점이 있으면 다른 포스트도 함께 찾아보시면

좋을 것 같습니다 :)

 

 

 

 

 

 

 

참고

 

안드로이드 아키텍처 패턴 - MVVM이 뭘까?

이전 MVC, MVP에 이어서 이번에는 MVVM 패턴에 대해 간략하게 알아보겠습니다.

velog.io

 

반응형