Programming/iOS

[iOS] MVVM Pattern

devssun 2021. 10. 8. 09:13
728x90
반응형

MVVM Pattern

MVVM

  • M : Model → Data
  • V : View (ViewController) → Presentation Logic 위치
  • VM : ViewModel → Business Logic 위치, UI 관련 코드는 존재하지 않음 (→ import UIKit ❌ )

조금 풀어서 설명해보면

  • 뷰 모델은 모델을 알지만 모델은 뷰 모델을 알지 못한다.
  • 뷰는 뷰 모델을 알지만 뷰 모델은 뷰를 알지 못한다.

→ 결국, UI와 Presentation Logic, Business Logic을 분리하고자 하는 게 MVVM 아키텍처라 할 수 있다.

그래서 MVVM Pattern으로 작성된 프로그램은 명확한 테스트가 가능하다.

실제로 프로젝트에 적용해보니..

최근 회사에서 프로젝트를 리팩토링할 수 있는 기회가 있었고, MVVM-C 패턴을 적용했다.
이전 MVC 패턴으로 짜여진 코드에서는 테스트를 작성하는 것도 어렵고 새로운 기능이 추가되면 어느 부분에서 사이드 이펙트가 발생할 지 예상이 어려웠는데, MVVM-C 을 적용하며 테스트를 작성할 수 있게 되니 어느 부분이 문제가 될지 빠른 확인이 가능했다.

좋은 패턴이긴하나 기능이 많은 페이지는 뷰모델의 크기도 덩달아 커져서 다양한 패턴을 적용하면서 가장 적절한 모습을 갖춰가는 게 중요한 것 같다.

MVVM 학습 자료

반응형