RIBs 정리 (1)

Yang Si Yeon·2022년 1월 2일
0

RIBs

목록 보기
1/2

해당 포스팅은 노수진님의 패스트캠퍼스 강의를 수강하면서 익힌 내용을 간단히 정리한 글입니다.

Riblet

Builder, Router, Interactor, View들의 묶음 단위.
아래 사진에서 표현된 것들이 하나의 Riblet

Builder

Riblet의 객체들을 생성하고 자식 Builder를 생성해서 Router에 넘겨준다.
(Router가 자식 Builder을 이용해서 본인이랑 자식 Router를 연결함)

build 메소드

func build(withListener listener: AppHomeListener) -> ViewableRouting { 
    // ex)
    // component 생성
    // viewController 생성
    // interactor 생성
    // interactor에 listener 연결
    // 자식 builder 생성
    // return Router
}

Riblet 객체를 생성하고, Router를 반환한다.
주입받는 listener는 부모의 interactor

Component

Riblet에 필요한 객체들을 담는 바구니의 개념

해당 바구니는 자식 Riblet이 필요한 것도 담고 있음. 따라서 자식들의 Dependency를 Component가 채택 함

Interactor

비즈니스 로직을 담당하는 두뇌 역할이며 모든 로직의 시작점
router를 약한 참조로 가지고 있음.

didBecomeActive 메소드
: MVC에서 viewDidLoad와 비슷한 역할.
Riblet이 부모에게 붙여져서 활성화 될 때 불림.

Listener

자식이 부모에게 이벤트 전달 할 때 쓰임 (delegate 패턴)

Router

Riblet 간의 이동 담당
자식 Riblet을 떼었다 붙였다 할 수 있음.

자식 Riblet 붙이기

  • 자식 Riblet의 Builder 받아옴
  • Builer의 build 메서드로부터 Router 받아옴
  • attachChild
  • View 띄우기

attachChild 메소드
: RIBs 프레임워크에 있는 메소드로, 립스 트리를 만들어서 각 Riblet들의 레퍼런스를 유지하고 Interactor의 라이프사이클 관련 메소드 호출

자식 Riblet을 붙일 때 똑같은 자식을 2번 이상 붙이지 않도록 방어 로직이 필요하다.

부모 Router {

    private var dashboardRouting: Routing?

    func attachDashboard() {
        // 방어 로직
        if dashboardRouting != nil {
    	    return
        }
    
        ...
    
        self.dashboardRouting = router
        addChild(router)
    }
}
profile
가장 젊은 지금, 내가 성장하는 데에 쓰자

0개의 댓글