[Architecture] VIP - 우태헌

2022-04-29

최근에 회사의 아키텍처 전환으로 인해 VIP 구조에 대해 알아봤습니다.

아래의 그림처럼 각 주요 인스턴스간의 관계를 순환하는 형태로 맞물려 있고,

image

각 인스턴스의 주요 역할은

  • ViewController → Display Logic
  • Interactor → Business Logic
  • Presenter → Present Logic

역할들을 프로토콜로 만들어 각 인스턴스가 준수할 수 있도록 합니다.


Display vs Present

개인적으로 각 역할을 보면 Business Logic은 의미가 분명한 것에 비해,

비교적 나머지 2개의 로직은 불명한 것으로 생각이 되었고,

이에 대해 확실한 구분방법이 필요했었습니다.(정확한 것은 아니지만…)

Display Logic - HOW

Present Logic - WHAT

개인적으로 이와 같이 사용자에게 ‘어떻게’ 보일 것인지와 사용자에게 ‘무엇’을 보일 것인지로 나뉘었는데,

Display Logic에서는 뷰 컴포넌트의 레이아웃, 색상, 애니메이션 등을 담당,

Present Logic은 Business Logic을 거친 데이터나 액션들을 기반으로 사용자에게 제공할 텍스트나 이미지 등의 데이터를 커스터마이징하는 것으로 정의했습니다.

(현재까지의 짧은 공부로 인한 개인적인 구분처리법입니다.)


vs MVVM

기존에 주로 사용되던 MVVM과 다르게 하나의 Scene을 위해 View와 관련된 로직으로 2개의 인스턴스에서 처리한다는 점입니다.

기존의 MVVM에 위의 3가지 로직을 굳이 적용시켜본다면

  • ViewController(View) → Display Logic
  • ViewModel → Business Logic

그리고 Present Logic은 내부 구현을 어떻게 하냐에 따라 View, ViewModel, Model 중에서 적절하게 담당할 것입니다.


개인블로그: https://oen0609.tistory.com/64