tutorials/tutorial4/TicTacToe/RandomWin/RandomWinBuilder.swift (34 lines of code) (raw):

// // Copyright (c) 2017. Uber Technologies // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // import RIBs public protocol RandomWinDependency: Dependency { var player1Name: String { get } var player2Name: String { get } var mutableScoreStream: MutableScoreStream { get } } final class RandomWinComponent: Component<RandomWinDependency> { fileprivate var player1Name: String { return dependency.player1Name } fileprivate var player2Name: String { return dependency.player2Name } fileprivate var mutableScoreStream: MutableScoreStream { return dependency.mutableScoreStream } } // MARK: - Builder protocol RandomWinBuildable: Buildable { func build(withListener listener: RandomWinListener) -> RandomWinRouting } public final class RandomWinBuilder: Builder<RandomWinDependency>, RandomWinBuildable { public override init(dependency: RandomWinDependency) { super.init(dependency: dependency) } public func build(withListener listener: RandomWinListener) -> RandomWinRouting { let component = RandomWinComponent(dependency: dependency) let viewController = RandomWinViewController(player1Name: component.player1Name, player2Name: component.player2Name) let interactor = RandomWinInteractor(presenter: viewController, mutableScoreStream: component.mutableScoreStream) interactor.listener = listener return RandomWinRouter(interactor: interactor, viewController: viewController) } }