VIPER 모델 정보
2756 단어 아키텍처
소개
이 기사에서는 VIPER 모델에 대해 간략하게 정리했습니다.
⚠️ 우리 쪽 초학을 위해 인식 차이가있을 가능성이 큽니다.
잘못을 발견했을 때는 코멘트에서 지적해 주시면 다행입니다 🙇♀️🙇♂️
참고
이 기사는 다음 정보를 참고로 작성했습니다.
이 기사는 다음 정보를 참고로 작성했습니다.
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() 등을 하지 않는다.
Reference
이 문제에 관하여(VIPER 모델 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eito0420/items/762e0bbb5d8f67f2265c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
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() 등을 하지 않는다.
Reference
이 문제에 관하여(VIPER 모델 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eito0420/items/762e0bbb5d8f67f2265c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
struct로 데이터 구조를 정의한다.
import UIKit 금지(UI가 어떻게 되어 있는지 신경쓰지 않는다).
기본적으로 프로퍼티와 이니셜라이저만 정의해, 로직을 가지지 않게 한다.
Router
화면 천이와 DI(의존성 주입)를 담당.
VIPER 아키텍처의 간이며 다른 유명 아키텍처에 없는 곳.
(다른 아키텍처에서는 화면 천이의 처리는 View가 계약하고 있어, 코드의 전망이 나빠지는 경향이 있다.)
※화면 생성은 Router 로 하고, 클래스 내부에서 init() 등을 하지 않는다.
Reference
이 문제에 관하여(VIPER 모델 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/eito0420/items/762e0bbb5d8f67f2265c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(VIPER 모델 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/eito0420/items/762e0bbb5d8f67f2265c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)