디자인 패턴

VIPER 패턴

언린이 2021. 4. 13. 00:32

일반적인 VIPER 패턴

VIPER 패턴은 MV(X)의 패턴을 대체하기 위해 만들어진 패턴입니다.

 

역할 및 동작 원리

  • View
    • 사용자에게 보여지는 View를 생각하시면 됩니다
    • 유저 인터랙션을 받는 역할을 담당합니다
    • 이벤트가 발생할 시 Presenter에게 해당 일을 전달합니다
    • Presenter의 요청대로 디스플레이하고 사용자의 입력을 Presenter에게 보냅니다
  • Presenter
    • Entity로부터 받은 업데이트 이벤트를 실행하지만 데이터를 직접적으로 보내지는 않습니다
    • View 모델의 변경사항을 Interactor에게 알립니다
    • Interactor로부터 데이터를 가져오고 View로 보내기 위해 데이터를 준비하여 View로 데이터를 디스플레이할 시기를 결정합니다
  • Interactor
    • Presenter로부터 받은 모델 변경사항에 따라 Entity에 접속하여 Entity로부터 수신한 데이터를 Presenter에게 전달합니다
    • Use Case에 따라서 Entity 모델 객체를 조작하는 로직을 담고있습니다
  • Entity
    • 순수 모델 객체
  • Routing
    • Wireframe이라고 불리기도 하며, UIWindow와 UINavigationController에서 화면 간의 탐색을 위한 라우팅을 담당합니다
    • Presenter가 언제 화면을 전환하는지를 담당한다면 Router는 어떻게 하는지를 담당합니다

 

 

VIPER 패턴의 장단점

  • 장점
    • 각 도메인의 역할이 명확하게 구분됩니다
    • 모듈을 작게 만들고 역할을 분명히 하기에 대규모 프로젝트에 적합합니다
  • 단점
    • 설계가 여러 곳으로 난립합니다
    • 명확한 가이드나 유지보수 되는 곳이 없습니다
    • 많은 파일들이 생성됩니다

'디자인 패턴' 카테고리의 다른 글

Clean Swift(VIP) 패턴  (0) 2021.04.13
MVVM 패턴  (0) 2021.04.13
MVP 패턴  (0) 2021.04.12
MVC 패턴  (0) 2021.04.12