MVVM vs MVC - siwonkim0/ios-project-manager GitHub Wiki
디자인 패턴에 대한 고민
MVVM vs MVC
MVC 란?
Model + View + Controller로 이루어진 패턴으로 각각 다음과 같은 역할을 합니다.
MVC 동작 순서
- Controller를 통해 사용자의 액션이 들어온다
- Controller는 사용자의 액션을 확인하고 Model을 업데이트한다
- Controller는 Model을 나타내줄 View를 선택한다
- View는 Model을 이용하여 화면을 나타낸다
- View가 Model을 이용하여 직접 업데이트
- Model에서 View에게 Notify하여 업데이트
- 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 동작 순서
- View를 통해 사용자의 액션이 들어온다
- View는 ViewModel에 액션을 전달한다
- ViewModel은 Model에게 데이터를 요청하고(Command패턴)
- ViewModel은 Model에게 응답받은 데이터를 가공하여 저장한다
- ViewModel은 View를 Data Binding을 통해서 바꿔준다.
참고 문서 https://beomy.tistory.com/43 https://velog.io/@addiescode/디자인-패턴-MVC-MVVM