본문 바로가기

Architectural Pattern

MVVM 패턴이란? (ios)

MVVM 패턴은 웹, 앱과 같은 유저 인터페이스를 통한 **이벤트 기반 프로그래밍**을 잘 할 수 있도록 고안된 아키텍처 패턴 중 하나입니다. 이 패턴은 기존의 MVC, MVP, VIPER, RIBs와 같은 아키텍처 패턴의 문제점과 한계를 해결하기 위해 탄생했습니다.

 

MVC에서 파생된, Model과 View 간의 의존성뿐만 아니라 Controller와 View 간의 의존성도 고려하여 각 구성 요소가 독립적으로 작성되고 테스트될 수 있도록 설계된 아키텍처 패턴

1) 구조

  • Model : 어플리케이션에서 사용되는 데이터와 그 데이터를 처리하는 부분입니다.
  • View : 사용자에서 보여지는 UI 부분입니다.
  • View Model : View를 표현하기 위해 만든 View를 위한 Model입니다. View를 나타내 주기 위한 Model이자 View를 나타내기 위한 데이터 처리를 하는 부분입니다.

2) 동작

MVVM 패턴의 동작 순서는 아래와 같습니다.

  1. 사용자의 Action들은 View를 통해 들어오게 됩니다.
  2. View에 Action이 들어오면, Command 패턴으로 View Model에 Action을 전달합니다.
  3. View Model은 Model에게 데이터를 요청합니다.
  4. Model은 View Model에게 요청받은 데이터를 응답합니다.
  5. View Model은 응답 받은 데이터를 가공하여 저장합니다.
  6. View는 View Model과 Data Binding하여 화면을 나타냅니다.

3) 특징

MVVM 패턴은 Command 패턴과 Data Binding 두 가지 패턴을 사용하여 구현되었습니다.

Command 패턴과 Data Binding을 이용하여 View와 View Model 사이의 의존성을 없앴습니다.

View Model과 View는 1:n 관계입니다.

4) 장점

MVVM 패턴은 View와 Model 사이의 의존성이 없습니다. 또한 Command 패턴과 Data Binding을 사용하여 View와 View Model 사이의 의존성 또한 없앤 디자인패턴입니다. 각각의 부분은 독립적이기 때문에 모듈화 하여 개발할 수 있습니다.

 

5) 단점

간단한 UI에서 오히려 ViewModel을 설계하는 어려움이 있을 수 있다. 

복잡해질수록 ViewModel이 빠르게 비대해진다.

표준화된 틀이 존재하지 않아 사람마다 이해가 다르다.

비동기 프로그래밍은 여전히 디버그가 어렵고, 성능 부하도 많이 발생할 수 있습니다.

 

DataBinding

데이터 바인딩은 쉽게 말해 Model과 UI 요소 간의 싱크를 맞춰주는 것이라 할 수 있다. 

이 패턴을 통해 View와 로직이 분리되어 있어도 한 쪽이 바뀌면 다른 쪽도 업데이트가 이루어져 데이터의 일관성을 유지할 수 있다. 

 

ios에서 데이터 바인딩을 하는 방법은 다음과 같다. 

  • KVO
  • Delegation
  • Functional Reactive Programming
  • Property Observer

참조

https://dev-leeyang.tistory.com/21

 

MVC, MVVM, MVP, VIPER, VIP를 알아봅시다.

안녕하세요. 리양입니다 :) 요즘 코로나로 전국적으로 이슈네여 ㅠ ㅠ 다들 몸 조심하시길 바랍니다. 요즘은 패턴에 대해 공부를 하기 시작했어여. 어떻게 layer를 좀 더 잘 나누어서 각 역할을 수

dev-leeyang.tistory.com

https://beomy.tistory.com/43

 

[디자인패턴] MVC, MVP, MVVM 비교

웹 개발자로 일을 하면서 가장 먼저 접한 디자인패턴이 바로 MVC 패턴이었습니다. 그만큼 유명하고 많이 쓰이는 디자인패턴인 MVC 패턴과 MVC 패턴에서 파생되어져 나온 MVP 패턴과 MVVM 패턴을 이야

beomy.tistory.com

https://eeyatho.tistory.com/77

 

Swift ) MVVM 탄생과정, 특징 - EEYatHo iOS

MVVM을 제대로 이해하기 위해서는, MVVM이 나오는 이유와 배경을 알아야한다고 생각한다. MVVM은 디자인 패턴이다. 디자인 패턴은 어쩌다 나온 것인지를 알기 위해서는, 프로그래밍 패러다임의 변

eeyatho.tistory.com