black iPad

iOS 애플리케이션 개발에서는 여러 아키텍처 패턴들이 사용된다.

그 중 RIB’s (Router, Interactor, Builder)는 Uber에서 소개된 아키텍처로, 확장성과 테스트 용이성을 중점으로 한 패턴이다.

이 글에서는 RIB’s의 기본 개념과 Swift를 이용한 예제를 통해 이 패턴을 자세히 알아본다.

RIB’s란?

RIB’s는 Router, Interactor, Builder의 약자로 다음과 같은 역할을 한다:

  • Router: 화면 전환과 같은 뷰의 네비게이션 로직을 담당한다.
  • Interactor: 비즈니스 로직을 담당한다.
  • Builder: RIB의 인스턴스 생성과 의존성 주입을 담당한다.

Swift 예제로 MVC 이해하기

1. Interactor

protocol ProfileInteractable: AnyObject {
    func fetchUserProfile() -> UserProfile
}

class ProfileInteractor: ProfileInteractable {
    func fetchUserProfile() -> UserProfile {
        // API 호출이나 데이터베이스 조회 등의 로직
        return UserProfile(name: "John Doe", age: 25)
    }
}

2. Router

protocol ProfileRoutable: AnyObject {
    func routeToDetailScreen(userProfile: UserProfile)
}

class ProfileRouter: ProfileRoutable {
    func routeToDetailScreen(userProfile: UserProfile) {
        // 상세 화면으로의 라우팅 로직
    }
}

3. Builder

class ProfileBuilder {
    static func build() -> ProfileViewController {
        let interactor = ProfileInteractor()
        let router = ProfileRouter()
        let viewController = ProfileViewController(interactor: interactor, router: router)
        return viewController
    }
}

4. View Controller

UIKit을 사용하여 간단한 예제를 구현했다.

import UIKit

class ProfileViewController: UIViewController {
    private let interactor: ProfileInteractable
    private let router: ProfileRoutable

    init(interactor: ProfileInteractable, router: ProfileRoutable) {
        self.interactor = interactor
        self.router = router
        super.init(nibName: nil, bundle: nil)
    }

    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    // ViewController 로직 (예: 버튼 액션 등)
}

RIB’s의 장점

  1. 모듈화: RIB’s는 애플리케이션을 독립적인 모듈로 분리하므로, 확장성과 유지보수가 쉽다.
  2. 재사용성: 비즈니스 로직과 라우팅 로직이 분리되어 있어 재사용이 용이하다.
  3. 테스트 용이성: 각 컴포넌트가 독립적이므로 단위 테스트하기 쉽다.

마치며

RIB’s는 큰 규모의 프로젝트나 복잡한 네비게이션 구조를 가진 애플리케이션에 특히 적합한 아키텍처 패턴이다.

이 패턴을 통해 iOS 애플리케이션의 구조와 코드 품질을 개선할 수 있다.

개발자로서 RIB’s를 학습하고 여러 프로젝트에 적용해보면 더욱 큰 경험을 얻을 수 있을 것이다.

One thought on “iOS 아키텍처 패턴 – 5: RIB’s”

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다