iOS 아키텍처 분석 - MVVM

pollajk·2024년 7월 4일

iOS 아키텍처

목록 보기
2/4

우선 MVVM의 구조는
Model - View - ViewModel로 이루어져 있다.
MVVM의 핵심은 View와 ViewModel의 구조에 있다.

이런식으로 MVVM이 동작하고 있는데 이 과정을 자세하게 알아봅니다.

1. 사용자의 Action들은 View를 통해 들어옵니다.
2. View에 Action이 들어오면 ViewModel에 Action을 전달합니다.
3. ViewModel은 Model에게 데이터 요청합니다.
4. Model은 ViewModel에게 요청받은 데이터를 응답합니다.
5. ViewModel은 응답 받은 데이터를 가공해서 저장합니다.
6. View는 Data Binding을 통해 UI 갱신합니다.

이런식으로 MVVM은 동작하고 밑에서 자세하게 Model, View, ViewModel이 어떤 일들을 하는지 자세하게 알아봅시다

Model

데이터를 다루는 부분

  • 애플리케이션의 데이터를 가져오고, 저장합니다
  • 완전히 UI랑 독립적인 데이터와 비즈니스 로직을 담당합니다

View

UI로 사용자에게 보여주는 부분

  • 마찬가지로 Model을 알고 있어선 안됨.
  • View가 ViewModel에게 데이터를 받으면 View가 설정을 직접 함

이 설정을 직접 하는 것이 Data Binding을 통한 작업이다.

이런식으로 MVVM에는 Binder가 존재해 ViewModel의 값이 변하면 옵저버 패턴을 이용해서 View가 스스로 UI를 설정 할 수 있는 것이다.

ViewModel

View와 ViewModel의 관계

  • ViewModel은 View의 추상화 개념, View의 존재를 알지 못하기 때문에 재사용이 가능합니다
  • ViewModel은 View가 데이터바인딩 할 수 있는 속성과 명령을 구현해 View에게 알려야 합니다.
  • View는 UI스레드를 차단하지 않은 상태로 유지해야되므로 ViewModel에서 I/O 작업에 비동기 메소드를 사용하고, 이벤트를 발생해 View에 속성 변경 사항을 비동기로 알려야 합니다.
  • ViewModel과 View는 1:N관계를 유지 합니다.

ViewModel과 Model의 관계

  • Model은 ViewModel, View 그 누구도 알아선 안됩니다.
  • 마찬가지로 ViewModel과 Model은 1:N관계를 유지 하고 있습니다
  • ViewModel은 Model의 데이터를 받으면 가공해서 View에게 전달합니다.

이렇게 정의할 수 있고 MVVM의 장점과 단점에 대해 알아보겠습니다

MVVM 장점

  • View와 Model은 독립적이고 ViewModel이 어댑터 역할을 하기 때문에 코드의 간섭을 줄임
  • ViewModel과 View가 1 : N 관계이기 때문에 여러 View를 생성할 수 있음
  • View와 ViewModel을 바인딩하기 때문에 코드의 양이 줄어듭니다

MVVM 단점

  • 간단한 UI에서도 ViewModel을 설계하는데 어려움이 있습니다.
  • MVC Controller처럼 복잡해지면 ViewModel도 거대해집니다.
  • 데이터 바인딩이 필수기 때문에 많은 메모리를 사용합니다.

참고자료 출처
James
평범한 개발자의 개발 여정
Fun한 개발자
개발자 황준일
박준형
산군의 MVVM

profile
열심히 공부하는 단계

0개의 댓글