iOS/Swift 어플 따라하기
[Swift] MVVM Design Pattern
Chafle
2022. 3. 15. 18:29
반응형
MVVM패턴의 목표
1. 기술 부채를 최소화
2. 재사용 및 지속 가능한 코드 만들기
MVVM이전에 사용 하던 MVC에 대해 간략하게 이해해 보겠습니다.
MVC패턴이란?
Model - View - Controller
Model = 데이터(Struct)
View = UI요소(UIVIEW)
Controller = 중계자 (UIViewController)
Model 스스로 데이터 변경 -> 컨트롤러에 변경알림
컨트롤러 -> 바뀔 필요가 있다-> 모델 업데이트시킴
컨트롤러는 -> 뷰에 이렇게 보여줘야겠다 -> 직접 의사소통
view는 사용자와 인터랙션하는 것을 컨트롤러와 소통
뷰컨이 너무 많은 일을 해서 너무 massive해짐.
MVVM이란?
Model - View -ViewModel의 약자
현재 제일 널리 쓰이는 디자인 패턴 중 하나
view | ViewModel | Model |
UI요소(UIview, UIViewController) | 중계자(ViewModel) | 데이터(struct) |
MVC vs MVVM
뷰컨이 모델에 직접 접근하지 못한다
뷰컨이 뷰모델이라는 새로운 클래스를 가짐
뷰컨이 MVC컨트롤러 레이어에 있었는데, MVVM은 뷰레이어에 있다
MVVM 개선점
뷰컨의 역할을 축소 -> 뷰모델 역할 확대
뷰컨의 할 일이 명확해짐에따라 -> 수정 쉽고, 유지보수에 적은 비용이 든다.
기술부채를 줄이고 재사용, 유지보수에 용이하게 하기 위한 작업 => 리팩터링 (refactoring)
간단히 리팩터링 = 코드수정
리팩터링의 목표 = 중복제거, 데이터와 오브젝트들의 단일 책임 갖기
10, 200 rule을 목표로..
메소드는 10줄 이내
클래스는 2000줄 이내로..
결론 : 코드 구조에 대한 전략.
- 클린 아키텍처
- 디자인 패턴
반응형