MVVM (Model-View-ViewModel) 로 이루어진 Architectural pattern (설계, 구성 패턴) 에 대해서 알아보겠다. 주로 위키피디아, 마이크로소프트 문서를 참고하였다.
Model-View-ViewModel
Overview of the Model-View-ViewModel pattern used by .NET MAUI
learn.microsoft.com
Model–view–viewmodel - Wikipedia
From Wikipedia, the free encyclopedia Software architecture design pattern Model–view–viewmodel (MVVM) is an architectural pattern in computer software that facilitates the separation of the development of the graphical user interface (GUI; the view)
en.wikipedia.org
MVVM 이란?
위에서 설명했듯이 Moel-View-ViewModel 구성으로 되어있는 소프트웨어 구성 패턴이다. MVVM 의 장점은 사용자가 보는 뷰와 뒤에서 일어나는 데이터 처리, 계산 등을 깨끗하게 분리시켜 준다.
Microsoft의 문서에는 View 는 ViewModel 을 "알고", ViewModel 은 Model 을 "알고"있지만, 반대로 ViewModel 은 View 를 "알지" 못하고, Model 은 ViewModel 을 "알지" 못한다고 한다. 따라서 MVVM 패턴은 View 와 Model 을 분리시켜준다고 써있다.
View
View 는 우리가 알고있는 우리가 마주하는 구조, 레이아웃, 모양, 애니메이션 등 우리가 화면에서 보는 것들을 말한다. 데이터 즉, 모델을 표현해주고 사용자와 뷰의 상호 작용 (클릭, 입력 등) 을 수신하여, ViewModel 에게 명령을 내린다.
알람 앱에서 알람을 추가해주는 + 버튼을 눌러 명령을 내린다.
ViewModel
ViewModel은 받은 명령을 구현하는 역할이다. 그리고 변경이 되었다면 View에게 상태변경을 알려준다. ViewModel은 기능과 데이터 그 자체의 변경에 대한 것을 제공한다면, 그것을 어떻게 표현할지는 View 가 결정한다. 또한 뷰 모델은 View가 어떻게 하면 데이터를 효과적으로 표현할지에 대한 고민이 필요하다. 필요하다면 데이터를 조합하거나 변환 할 수 있다.
알람 앱에서 알람을 추가해주는 버튼을 사용자가 눌렀을 때, 설정한 시간, 소리 등을 받아서 데이터에 저장할 수 있게 해준다.
Model
모델은 데이터의 묶음으로 보면 쉬울 것 같다.
ViewModel이 업데이트 하라고 한 알람 관련 데이터를 저장하고, 데이터가 업데이트 된 것을 ViewModel 에 알려준다. 그렇다면 ViewModel 은 업데이트가 완료되었다고 View에 알려준다. 그렇게 되면 비로소 View에 새로운 알람 항목이 생기는 것이다.
결론
View 는 ViewModel 에 관여할 수 있고, ViewModel 은 Model 에 관여할 수 있다. 하지만 Model 은 ViewModel 을 통해 View 에게 단순히 데이터의 상태만 알려줄 수 있다. 따라서 View 와 Model 은 분리된다. ViewModel 은 View 보다는 Model 에 좀더 가깝다고 생각한다.
View 는 유저가 마주하는 것, Model 은 그 View 에 들어가는 데이터, ViewModel 은 데이터가 어떤식으로 전달되고, 표현되는지 관리해주는 시스템으로 정리할 수 있을 것 같다.
'Programming > Programming Study' 카테고리의 다른 글
[Programming Study] SOLID (0) | 2023.06.25 |
---|---|
[Programming Study] 캡슐화에 대해서 (0) | 2023.06.24 |
[Programming Study] 추상화에 대해서 (0) | 2023.06.23 |
[Programming Study] 싱글톤 패턴(Singleton pattern) (0) | 2023.06.17 |