Architecture Composable Architecture RIBs

RIBs

RIBs 아키텍처는 Composition을 활용하여 비지니스 로직을 트리구조를 사용하여 수직적인 계층으로 쪼개는 것에 초점이 맞추어저 있다. 작은 객체로 쪼갠 후 요소들이 일관성 있는 통신 방법을 통해 아키텍처에 익숙하지 않은 팀원에게도 프로젝트를 익숙하도록 개선할 수 있다.

if(kakao)2020 카카오페이 관련 세션에서도 소개 된 적이 있다.

어서오세요 RIBs입니다. 카카오페이 비즈니스앱 개발기

Riblets이란?

Image

Router, Interactor, Builder, (optional) View의 단위를 묶어서 말할 때 쓰인다.

Builder

Riblets의 객체를 생성하고 Router를 리턴한다.

func build(withListener listener: Listener) -> ViewableRouting {

Component

로직을 생성할 때 필요한 데이터를 담는 것을 담당한다. 필요한 자식 Riblets의 Dependency 또한 Component에서 Confirm한다.

Image

Interactor

비즈니스 로직을 담당한다. 모든 로직의 시작점이다.

Router

Riblets 간의 이동을 담당한다. 자식 Riblets을 유동적으로 붙일 수도, 떼어 낼 수도 있는 것이 Router의 역할이다.

RIBs는 트리구조를 기반으로 한다.
하나의 Riblets은 여러 자식 Riblets을 가질 수 있으며, 하나의 부모 Riblets을 가진다.

attachChild()

attachChild()은 RIBs의 내부 메서드이며, 부모 Riblets은 자식 Riblets을 연결하며 Riblets의 Lifecyle을 관리하기 위해 사용된다.

let calendarHomeRouting = calendarHome.build(withListener: interactor)
let boardHomeRouting = boardHome.build(withListener: interactor)
let settingHomeRouting = settingHome.build(withListener: interactor)

attachChild(calendarHomeRouting)
attachChild(boardHomeRouting)
attachChild(settingHomeRouting)

ModernRIBs

Uber의 Ribs는 ReactiveX의 RxSwift Dependency가 있으나 이것을 걷어내고 Combine으로 대체한 오픈소스이다. ModernRIBs는 한국 개발자 분이 만드셨다.

댓글남기기