[이론]MVVM 디자인 패턴
1. 디자인 패턴이란?
개발 시 자주 나나타는 과제를 해결하기 위한 방법 중 하나로, 개발 과정에서 발견된 설계의 노화우를 축적하여 이후 재 이용하기 좋은 형태로 특정 규약을 묶어서 정리한 것
- 위키백과
즉, 좋은 코드(확장과 수정에 용이, 유지보수성 좋음)를 설계하기 위한 설계 디자인 방법론이다.
디자인 패턴 분류는 생성/구조/행동로 나뉘어 지며, 종류는 다양하다. 그 중에 MVVM 패턴을 살펴본다.
2. MVVM 패턴이란?
" 하나의 소프트웨어 아키텍처 패턴으로 그래픽 사용자 인터페이서 (View)의 개발을 비즈니스 로직(Model) 또는 백엔드 로직으로 부터 분리시켜서 View가 어느 특정한 모델 플랫폼에 종속되지 않음 "
" 사용자 인터페이스의 이벤트-기반 프로그래밍을 단순화하기 위해 발명 됨 "
MVVM 패턴의 목표는 비즈니스 로직과 프레젠테이션 로직을 UI로 부터 분리한다.
이로써 테스트, 유지 보수, 재사용을 쉽게 사용 할 수 있게 된다.
3. 구성요소
MVVM 패턴은 3가지 요소로 구성되어 있다.
MVVM에서 뷰는 뷰모델을 알지만, 뷰 모델은 뷰를 알지 못한다. 뷰 모델은 모델을 알지만, 모델을 뷰모델을 알지 못한다.
이런 구조로 뷰 모델과 모델이 뷰로 부터 독립적인 형태를 띄워 MVVM의 목적을 이루게 된다.
1. View (UI)
- UI 관련으로 애니메이션 같은 UI 로직만 포함
- 뷰는 뷰 모델의 상태 변화를 관찰(Observe) 한다.
2. ViewModel (프레젠테이션 로직)
- 역할 : 뷰가 사용할 메서드와 필드 구현, 뷰에게 상태 변화 알림
@ 데이터의 제어문( 제어 / 반복 / 분기 )을 포함한다.
- 뷰 모델에서 제공하는 메서드와 필드가 UI에서 제공할 기능을 정의하지만,
뷰가 이 기능을 어떻게 보여줄 것인지 결정한다.
" 일반적으로 뷰 모델과 모델은 일대다 관계를 형성합니다. 뷰 모델은 뷰가 쉽게 사용할 수 있도록 모델의 데이터를 가공해서 뷰에게 제공합니다. 예를 들어, 뷰에서 서로 다른 두 모델의 데이터를 활용한 데이터가 필요하다면 뷰에서 모델의 값을 조작해서 사용하는 것이 아니라, 뷰 모델에서 두 모델의 데이터를 가공하고 뷰에서는 오직 UI만 다루도록 해야 합니다. "
3. Model (비즈니스 로직)
- 데이터(Data). 즉, 어플리케이션에서 사용하는 데이터 및 그 데이터를 처리한다.
5. 장점
- 뷰 모델이 모델과 뷰 사이의 어댑터로서 변경이 생길 시 변경을 최소화
- 모델과 뷰 모델이 뷰로 부터 독립적
@ 뷰 모델과 모델을 플랫폼 독립적으로 개발 가능
@ 테스트 케이스 사용에 유용 (유닛테스트)
- 개발 기간 동안 개발자와 디자이너가 동시에 독립적으로 작업 가능
즉, UI, 비즈니스 로직, 데이터베이스가 기능별로 모듈화되어 있어 확장, 수정 및 유지보수의 용이성
6. 단점
- 역할별 나뉘어 만들어줘야하기에 생성에 필요한 클래스양 증가
- 클래스 간 서로 연결 필요
- 시간적, 인적 자원이 많이 필요
- 앱이 커지면 앱의 메모리 소모가 데이터 바인딩 때문에 커짐
* 참고 자료
https://dailyheumsi.tistory.com/148
[디자인 패턴 1편]. 디자인 패턴 개요
1. 디자인 패턴이란 디자인 패턴은 소프트웨어 공학론 안의 좋은 코드를 설계하기 위한 일종의 설계 디자인 방법론이다. 그렇다면 좋은 코드란 무엇인가? 좋은 코드란, 가독성, 간결함 등 여러
dailyheumsi.tistory.com
https://ko.wikipedia.org/wiki/%EB%AA%A8%EB%8D%B8-%EB%B7%B0-%EB%B7%B0%EB%AA%A8%EB%8D%B8
모델-뷰-뷰모델 - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. 모델-뷰-뷰 모델(model-view-viewmodel, MVVM)은 하나의 소프트웨어 아키텍처 패턴으로-마크업 언어 또는 GUI 코드로 구현하는-그래픽 사용자 인터페이스(뷰)의 개발을
ko.wikipedia.org
https://blog.yena.io/studynote/2019/03/16/Android-MVVM-AAC-1.html
[Android] MVVM & 안드로이드 아키텍쳐 컴포넌트 시작하기
(나를 포함한) 안드로이드 개발을 처음 시작하는 사람들은 대부분 액티비티에 거의 모든 코드를 직접 넣는다. 하지만 시간이 갈수록 액티비티는 점점 무거워지고, 수정이나 유지 보수 하기가 힘
blog.yena.io
https://velog.io/@k7120792/Model-View-ViewModel-Pattern
MVVM 패턴
나의 첫 디자인 패턴 MVVM 패턴을 알아보자 🧐
velog.io
https://www.thekpop.net/2020/03/design-pattern-03-mvvm.html
[ Design Pattern 03 ] MVVM 패턴이란
디자인패턴의 하나인 MVVM패턴에 대해 설명하고 model, view, ViewModel에 해당하는 구성요소들과 총 작동과정을 설명합니다.
www.thekpop.net