MVVM
다지인 패턴 <ul>
<li v-for="(array, n) in list">()</li>
</ul> - 개발 과정에서 공통으로 발생하는 문제를 해결하기 위해 사영되는 패턴 - 구현체가 아닌 문제 해결을 위한 패턴
디자인 패턴 사용 이유
- 증명된 솔루션
- 패턴대로 코드가 전개되고 수정하는데에 열려있는 구조
- 어디서든 사용 가능함.
- 디자인 패턴은 언어에 제약을 받지 않음.
MVVM 패턴 (Model - view - ViewModel)
- MVVM 패턴의 목표는 비지니스 로직과 프레젠테이션 로직을 UI로 부터 분리하는것.
- 모델이 데이터에 대한 작업을 마치면 뷰 모델에게 결과를 알림.
- MVVM 에서 ViewModel은 View 와 1:n 관계를 이룸
구성 요소
- 모델(Model)
- 데이터, 상태, 비지니스 로직등 포함
- 모델은 데이터에 대한 업데이트 내용을 알고있음. 이 작업들은 뷰모델에 의해 시작되며, 모델이 데이터에 대한 작업을 마치면 뷰 모델에게 결과를 알림.
- 뷰(View)
- 사용자 이벤트 수신 후 데이터를 표시하는 UI(User Interface) 책임짐(ViewController 도 View 의 일부)
- 뷰 모델의 변경사항을 감지하고 뷰모델이 업데이트한 데이터를 보여줌.
- 뷰와 모델사이에 연결이 없고 뷰 모델에 의해 연결됨.
- 뷰 모델(View Model)
- View와는 binding, Command로 연결 후 Model 과 데이터를 주고받음.
- 뷰 모델은 로직을 담당
장점
- 뷰 모델에서는 UIKit 관련된 코드가 없어, UI에 독립적인 테스트 가능
단점
- 뷰 모델 설계하는것이 쉽지않음
- 뷰에 대한 처리가 복잡해질수록 뷰 모델이 거대해져 오버스펙이 될 수 있음.