Swift 符合协议的对象应隐藏协议方法

Swift 符合协议的对象应隐藏协议方法,swift,viper-architecture,Swift,Viper Architecture,我有一个应用程序设计与毒蛇架构。为了避免例外,每个模块都由一个符合BaseFactory协议的工厂类创建 我的应用程序中的一百(2%)个模块中的两个应该使用自定义工厂方法创建,该方法不通过协议强制执行,该工厂方法接受参数 是否可以在MemberProfileFactory类中“隐藏/禁用”函数createViperModule() protocol BaseFactory { static func createViperModule () -> UIViewController

我有一个应用程序设计与毒蛇架构。为了避免例外,每个模块都由一个符合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
    }
}

无法将“createViperModule”设为私有,因为“BaseFactory”中的“createViperModule”声明为内部。但您可以将其声明为可选,因此它不是强制实现的

@objc protocol BaseFactory {
    @objc optional static func createViperModule () -> UIViewController
}