2025. 4. 5. 13:45ㆍAndroid
[배경]
마틴 파울러의 PDS(Presentation Domain Separation)가 그 시초입니다.
- 2004년 소개된 Presentation Model이 원형입니다.
- Microsoft에서 처음 구현하였습니다.
ViewModel
- Presenter와 유사함. 이 때, 뷰 모델은 뷰를 제어하지 않음.
- ViewModel은 View가 있는지도 모르고, View에게 데이터를 전달하는 게 전부임.
- 이 때문에 뷰 모델은 그 자체로 독립적인(self-contained) 시스템임.
- 결과를 이벤트로 보낼 뿐 수신인은 그 존재를 모름. (이 점을 놓고, 동작만 보면 Broadcast가 생각난다. 안드로이드의 sendBroadcast에서 Intent를 날린다. 하지만 받는 입장에서는 누가 보낸 줄 모른다. Intent를 뜯어봐야 그제야 알 수 있다.)
MVVM의 단점
1. 학습곡선이 있다.
- 기본적으로 이벤트를 반응형으로 해본 경험이 있어야한다.
- RxJava 혹은 Coroutines 라이브러이의 학습이 필요하다.
2. 의도지않게 FatViewModel이 될 위험성이 있다.
- 큰 크기의 모델을 피하기란 어렵다.
- 순환 이벤트 흐름을 완전히 막기 어렵다.(모든 클라이언트의 코딩이 이런 문제를 잠재적으로 가지고 있다. JavaScript의 경우 stopPropergation 함수로 이를 제어한다.)
이후 ViewModelAntiPattern에서도 다루겠습니다.
짧게만 설명해 보자면, ViewModelAntiPattern은 MVVM을 구현하는데 ViewModel을 올바르게 구현하지 않는 사례들을 의미합니다.
[환경]
IDE :
Flutter version:
[reference]
https://martinfowler.com/eaaDev/PresentationModel.html
Presentation Model
Represent the state and behavior of the presentation independently of the GUI controls used in the interface
martinfowler.com
[도움]
1. 응원 댓글은 글 쓰는데 힘이 됩니다.
2. 공감도 글 쓰는데 힘이 됩니다.
3. 광고 한번 클릭 해주시면 힘은 두 배가 됩니다.
4. 혹시라도 부족한 부분이 있다면 덧글로 남겨주세요. 남기시면, 더 나은 글을 쓸 재료가 됩니다.
'Android' 카테고리의 다른 글
| [신기능] Android Studio에서의 새로운 액티비티를 만들때 (0) | 2025.04.25 |
|---|---|
| Android Gradle plugin requires Java 11 to run. you are currently using Java 1.8 (0) | 2021.11.15 |
| 유튜브 API - 시작하기(구글 클라우드 YouTube API v3 설정) (1) | 2021.11.08 |
| 유튜브 API - 시작하기에 앞서 드릴 말씀 및 목차. (0) | 2021.11.05 |
| [MediaRecorder] 녹음 기능 형성을 시도기 (0) | 2021.11.02 |