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줄 이내로..

 

 

결론 :  코드 구조에 대한 전략.

  • 클린 아키텍처
  • 디자인 패턴
반응형