我有一个使用Viper架构设计的应用。为避免出现异常,每个模块都由符合BaseFactory协议的工厂类创建。
我的应用程序中的两百个(2%)模块应该使用自定义工厂方法创建,该方法不是通过协议强制执行的,这是一个接受参数的工厂方法。
是否可以在MemberProfileFactory类中“隐藏/禁用”函数createViperModule()?
protocol BaseFactory {
static func createViperModule () -> UIViewController
}
class HelloFactory: BaseFactory {
static func creatViperModule() -> UIViewController {
let p = HelloPresenter()
let storyboard = UIStoryboard.init(name: "Hello", bundle: nil)
let vc = (storyboard.instantiateInitialViewController() as? HelloVC)!
p.vc = vc
vc.p = p
return vc
}
}
class MemberProfileFactory: BaseFactory {
static func createViperModule() -> UIViewController {
return PublicProfileVC()
}
static func createViperModule(withMember member: MemberModel) -> UIViewController {
let p = MemberProfilePresenter()
let storyboard = UIStoryboard.init(name: "MemberProfile", bundle: nil)
let vc = (storyboard.instantiateInitialViewController() as? MemberProfileVC)!
p.vc = vc
p.user = user
vc.p = p
return vc
}
}
答案 0 :(得分:0)
您无法创建“创建游戏模块”。私有因为' createViperModule'在' BaseFactory'中声明为内部。但你可以声明它是可选的,所以它不是必须实现的。
@objc protocol BaseFactory {
@objc optional static func createViperModule () -> UIViewController
}