반응형
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줄 이내로..
결론 : 코드 구조에 대한 전략.
- 클린 아키텍처
- 디자인 패턴
반응형
'iOS > Swift 어플 따라하기' 카테고리의 다른 글
[Swift] 뮤직 플레이어, 홈화면에서 플레이어 화면 띄우기 (0) | 2022.03.22 |
---|---|
[Swift] 뮤직 플레이어 코드 / 싱글 톤 객체 만들기 (2) | 2022.03.22 |
[Swift] List 형태 어플1-3 /Segueway로 연결된 ViewController간 데이터 넘기기 (0) | 2022.03.14 |
[Swift] List 형태의 나열 어플 1-2 -> CustomCell (0) | 2022.03.14 |
[Swift] List 형태의 나열 어플 1-1 (0) | 2022.03.11 |