MVVM vs MVC - siwonkim0/ios-project-manager GitHub Wiki

디자인 패턴에 대한 고민

MVVM vs MVC

image

이미지 출처

MVC 란?

Model + View + Controller로 이루어진 패턴으로 각각 다음과 같은 역할을 합니다.

MVC 동작 순서

  1. Controller를 통해 사용자의 액션이 들어온다
  2. Controller는 사용자의 액션을 확인하고 Model을 업데이트한다
  3. Controller는 Model을 나타내줄 View를 선택한다
  4. View는 Model을 이용하여 화면을 나타낸다
    1. View가 Model을 이용하여 직접 업데이트
    2. Model에서 View에게 Notify하여 업데이트
    3. View가 주기적으로 Model의 변경을 감지하여 업데이트

장점

  • 코드가 직관적이고 비교적 빠른 시간내에 개발 가능

단점

  • View와 Model간의 높은 의존성이 있다.

MVVM 이란?

Model + View + ViewModel로 이루어진 패턴으로 각각 다음과 같은 역할을 합니다.

  • Model: 앱에서 다룰 데이터를 가지고, 그 데이터를 처리하는 부분
  • View: 사용자에게 보여질 화면
  • ViewModel: Model이 가진 데이터를 View에 보여주기 위한 (View가 원하는) 값으로 변형(가공)

장점

  • View와 Model사이에 의존성이 없다.
  • View와 ViewModel사이에도 의존성이 없다. (Command패턴과 Data Binding)

단점

  • ViewModel을 설계하기가 어렵다.
  • View와 Model사이의 의존성은 해결되었지만, 앱이 복잡해질수록 View와 ViewModel사이에 의존성이 강해진다
  • 데이터 바인딩을 통해 View를 바꿀 때 간단한 View를 만들더라도 많은 코드를 작성해야한다.

MVVM 동작 순서

  1. View를 통해 사용자의 액션이 들어온다
  2. View는 ViewModel에 액션을 전달한다
  3. ViewModel은 Model에게 데이터를 요청하고(Command패턴)
  4. ViewModel은 Model에게 응답받은 데이터를 가공하여 저장한다
  5. ViewModel은 View를 Data Binding을 통해서 바꿔준다.

참고 문서 https://beomy.tistory.com/43 https://velog.io/@addiescode/디자인-패턴-MVC-MVVM