이번에 인턴을 준비하는 과정에서 MVVM패턴을 사용하는 회사가 있어서 MVVM패턴을 알아보고자 한다.
MVVM패턴이란,
MVVM 패턴은 마틴 파울러의 Presentation 모델 패턴에서 파생된 디자인 패턴입니다. MVVM 패턴의 목표는 비즈니스 로직과 프레젠테이션 로직을 UI로부터 분리하는 것입니다. 비즈니스 로직과 프레젠테이션 로직을 UI로부터 분리하게 되면, 가독성, 테스트, 유지 보수, 재사용이 쉬워집니다.
1) 구조
Model
Model은 사용하려는 데이터를 가지고 있는 비시각적 클래스. 따라서 모델은 일반적으로 비즈니스 및 유효성 검사 논리와 함께 데이터 모델을 포함하는 앱의 도메인 모델을 나타내는 것.
일반적으로 데이터를 액세스하거나 캐싱이 필요한 서비스 또는 리포지토리와 함께 사용.
View
사용자가 화면에서 보 레이아웃 구조, 배치, 외관에 해당. 또한 UI와 관련된 로직을 수행.
ViewModel
View에 연결된 데이터와 명령을 구현하고 변경 알림 이벤트를 통해 상태의 변경을 View에 알림.
그리고 상태 변경 알림을 받은 View는 변경을 적용할지 말지를 결정.
AAC에서의 ViewModel은 화면 회전 같은 변화에서 View에 사용되는 데이터를 유지시키기 위한, Lifecycle을 알고 있는 클래스.
Binder
MVVM 패턴에서는 선언적인 데이터와 '명령 - 바인딩 (명령 - 연결)'이 내재되어 있음.
바인더는 뷰 모델과 뷰의 동기화를 위해 상용구 로직을 작성하지 않아도됨.
2) 동작
MVVM 패턴의 동작 원리
1. View에 사용자 입력이 들어오면 ViewModel에게 명령을 보냄.
2. ViewModel은 필요한 데이터를 Model에게 요청.
3. Model은 ViewModel에게 요청된 데이터를 응답.
4. ViewModel은 응답 받은 데이터를 가공해서 저장.
5. View는 ViewModel과의 Data Binding으로 인해 자동으로 갱신.
3) 장점 및 단점
장점
- 다른 패턴의 MVP는 뷰 자체를 참조해야하는데 MVVM의 경우에는 ViewModel이 View를 참조할 필요가 없이 독립적임.
- View, ViewModel, Model 사이의 의존성 없이 독립적이기 때문에 모듈화 하여 개발할 수 있음.
- 독립성을 유지하기 때문에 효율적인 유닛 테스트 가능.
단점
- 큰 응용 프로그램에서 데이터 바인딩을 사용하게 되면 눈에 띄게 메모리를 소모하게 됨.
- View Model의 설계가 어려움.
- 데이터 바인딩이 필수적으로 요구됨.
4) 마치며
이번에 인턴을 준비하는 과정에서 MVVM 패턴의 이해도를 요구하길래 MVVM 패턴에 대하여 공부를 해보았다. 하지만 이론만으로는 이해가 잘 되지 않는다. MVC 패턴과 큰 차이를 아직은 못 느끼겠다. 향후에 MVVM 패턴을 이용한 예제들을 실습해보면서 MVVM 패턴과 MVC 패턴의 차이점과 MVVM 패턴을 좀 더 이해해보는 시간을 가져야겠다.
5) 출처
https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EB%B7%B0%EB%AA%A8%EB%8D%B8
https://docs.microsoft.com/en-us/xamarin/xamarin-forms/enterprise-application-patterns/mvvm
'Android' 카테고리의 다른 글
[Android] 안드로이드 난독화 및 최적화하기 (0) | 2023.12.14 |
---|---|
[Android] 안드로이드 스튜디오에서 릴리즈 버전 테스트하기 (0) | 2023.12.13 |
[Android] collectAsState()와 collectAsStateWithLifecycle() 차이점 (0) | 2023.11.09 |
RxJava란 (0) | 2022.03.15 |
AsyncTask 정지...(deprecated) (0) | 2022.03.08 |