VIPER 모델 정보

2756 단어 아키텍처

소개



이 기사에서는 VIPER 모델에 대해 간략하게 정리했습니다.
⚠️ 우리 쪽 초학을 위해 인식 차이가있을 가능성이 큽니다.
잘못을 발견했을 때는 코멘트에서 지적해 주시면 다행입니다 🙇‍♀️🙇‍♂️

참고



이 기사는 다음 정보를 참고로 작성했습니다.
  • cheesecake Labs
  • VIPER 아키텍처 요약
  • VIPER로 만들자! 실천 iOS 앱 개발 ~ 녹화한 라이브 코딩을 더해 ~

  • VIPER 모델이란?




    ( htps : // 이 m / 히 c 또는 04 / ms / 09534b5 떡 c33b2 에서 인용)

    Router : 화면 전환을 담당.
    Presenter : 깃발 역.
    Interactor : 비즈니스 로직을 담당.
    Entity : 데이터 자체.
    View : 외형과 사용자 조작을 담당.
    UIView and/or UIViewController : 외형과 그 처리 등을 한다.
    UIKit independent mediator: 중개역.
    Manipulates data and use cases : 데이터와 그 처리를 담당.
    Owns and sends user actions : 사용자 작업 알림.
    Owns and asks for updates : 처리, 업데이트 요청.
    Knows about : 일방적으로 알고 있다.
    Notifies : 알림.
    Updates : 업데이트.

    클린 아키텍처를 iOS 앱 개발용으로 재정리한 것
    View , Interactor , Presenter , Entity , Router 에 역할을 나누고 있고 그 머리글자를 취하여 VIPER라고 부른다.

    VIPER 아키텍처의 철학



    의존성 분리


  • 요소끼리 관심이 없는 상태
  • 서로 프로토콜로 연결 (프로토콜에만 의존하는 상태)
  • 실태는 외부에서 꽂는다 (의존성 주입)

  • 단일 책임의 원칙


  • 클래스의 내용을 변경하는 이유는 복수 존재하지 않는다 (한마디로 설명)

  • →1 비즈니스 로직 = 1 클래스

    보기



    화면의 갱신과 Presenter에의 이벤트 통지를 담당.
    1ViewController에 대해 1protocol을 끕니다.

    Interactor



    CRUD 담당.
    Presenter에서 요청한 비즈니스 로직을 구현하고 결과를 반환합니다.
    import UIKit 금지(UI가 어떻게 되어 있는지 신경쓰지 않는다).
    ※순환 참조가 되지 않도록 주의.

    Pressenter



    View로부터 받은 이벤트를 바탕으로 다른 클래스에 의뢰한다.
    View에 화면의 갱신을 의뢰한다.
    Interactor에 데이터의 취득을 의뢰한다.
    Router에게 화면 전환을 요청합니다.
    import UIKit 금지(UI가 어떻게 되어 있는지 신경쓰지 않는다).
    Presenter에는 상태를 가질 수 없다(허브에 철저).
    ※상태를 갖게 해 버리면 테스트 코드가 쓰기 어려워진다.

    Entity



    struct로 데이터 구조를 정의한다.
    import UIKit 금지(UI가 어떻게 되어 있는지 신경쓰지 않는다).
    기본적으로 프로퍼티와 이니셜라이저만 정의해, 로직을 가지지 않게 한다.

    Router



    화면 천이와 DI(의존성 주입)를 담당.
    VIPER 아키텍처의 간이며 다른 유명 아키텍처에 없는 곳.
    (다른 아키텍처에서는 화면 천이의 처리는 View가 계약하고 있어, 코드의 전망이 나빠지는 경향이 있다.)
    ※화면 생성은 Router 로 하고, 클래스 내부에서 init() 등을 하지 않는다.

    좋은 웹페이지 즐겨찾기