MVVM in iOS

김개발소발·2022년 7월 24일
0

MVVM

목록 보기
1/2

Why?

현재 개인 프로젝트를 MVC(View-Controller-Model)로 개발하고 있으며, 서로 밀접하게 연관되어 있어 변경이 있을 때 많은 사이드 이펙트가 발생했습니다.

그래서? MVVM!

결론부터 말하자면

View와 Model의 결합도가 최대한 없고, 변경에 유연할 수 있는 선택지인 MVVM 패턴으로 변경하기로 결정했습니다.
추가적으로 SwiftUI를 고려하고 있기 때문에 View 완전히 분리하고 싶었습니다.

장점

  • 데이터 바인딩을 통해 View-Model 간 동기화할 수 있다.
  • View 혹은 Model에 변경에도 서로에 대한 영향(side effect) 최소화한다.

단점

  • View Model 설계가 어렵다.

MVVM?

  • Model - View - View Model의 조합으로 Model과 View를 바인딩하는 View Model이 추가된 디자인 패턴
  • 데이터 바인딩을 통해 데이터의 변경이 발생 시 뷰에 업데이트

Model

  • 도메인 모델로서, 행위와 데이터를 아우르는 개념이다.
  • 현재 데이터의 상태(값)를 저장하는 주체
  • 유효성 검사 등 데이터에 필요한 행위를 정의(메소드)

View

  • 사용자에게 보여지는 텍스트, 버튼 등 View의 배치한다.
  • 버튼 클릭, 키보드 입력 등 사용자의 이벤트를 감지한다.

ViewModel

  • 뷰를 위해 정의된 모델이며, 모델과 뷰를 연결하는 추상화된 바인더 역할을 한다.
  • 모델의 상태(값)을 View에 표시하기 위한 정형화된 데이터를 전달하는 중간자 역할을 한다.
  • MVP의 Presenter는 View에 대한 참조를 하고 있지만, View Model은 View를 참조하지 않는다.
profile
사람들 속에 숨어사는 INTJ 성향을 가진 개발자

0개의 댓글