利用 Swift 的协议实现组建化,在 Protocol 中声明约定,在各子模块中扩张协议实现方法,主项目自由组合
协议声明
public protocol LoginViewProtocol {
static func createViewController() -> UIViewController
}
在集成的库里面实现 LoginModule
public extension LoginViewProtocol {
static func createViewController() -> UIViewController {
let viewController = LoginViewController()
return viewController
}
}
主项目使用
import LoginModule
struct RoutersInstance {
struct LoginView: LoginViewProtocol {
}
}
let viewController = RoutersInstance.LoginView.createViewController()
navigationController?.pushViewController(viewController, animated: true)
实现模块组装,在编译时就可以检查出 LoginModule 是否有实现,如无则报错。切换模块时只需更换 LoginModule
初步想法,欢迎讨论 git:https://github.com/zhulihong89/SwiftRouter