반응형
전에 MVP 에 대해 알아보았습니다.
이번에는 각각의 디자인 패턴의 단점을 보완하기 위해 만들어진 MVVM 에 대해 알아보겠습니다.
MVVM 이란?
MVVM 패턴은 Model - View - ViewModel 를 합친 용어입니다.
Model 과 View 가 존재하고, Controller, Presenter 대신 ViewModel 이 존재합니다.
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 이든 상황에 따라 잘 사용하면 좋을 것 같습니다.
또한 더 궁금한 점이 있으면 다른 포스트도 함께 찾아보시면
좋을 것 같습니다 :)
참고
반응형
'Android > Design Pattern' 카테고리의 다른 글
[Android/Design Pattern] MVP 디자인 패턴에 대해 알아보자! (0) | 2022.08.22 |
---|---|
[Android/Design Pattern] MVC 디자인 패턴에 대해 알아보자! (0) | 2022.04.16 |