RIBs
RIBs 아키텍처는 Composition을 활용하여 비지니스 로직을 트리구조를 사용하여 수직적인 계층으로 쪼개는 것에 초점이 맞추어저 있다. 작은 객체로 쪼갠 후 요소들이 일관성 있는 통신 방법을 통해 아키텍처에 익숙하지 않은 팀원에게도 프로젝트를 익숙하도록 개선할 수 있다.
if(kakao)2020 카카오페이 관련 세션에서도 소개 된 적이 있다.
어서오세요 RIBs입니다. 카카오페이 비즈니스앱 개발기
Riblets이란?
Router, Interactor, Builder, (optional) View의 단위를 묶어서 말할 때 쓰인다.
Builder
Riblets의 객체를 생성하고 Router를 리턴한다.
func build(withListener listener: Listener) -> ViewableRouting {
Component
로직을 생성할 때 필요한 데이터를 담는 것을 담당한다. 필요한 자식 Riblets의 Dependency 또한 Component에서 Confirm한다.
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는 한국 개발자 분이 만드셨다.
댓글남기기