개발 이론

[이론]MVVM 디자인 패턴

중곰 2021. 6. 12. 23:39

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

 

반응형