我在swift 4.2中有一个类家族,我想将这些实例的创建限制为仅限工厂类,在C ++中,我可以通过将构造函数声明为private并将其添加到factory方法中来添加诸如此类的关键字,以强制实施这个:
class A{
friend factoryClass::createInstance(int type);
private A();
}
class subA: private A{
friend factoryClass::createInstance(int type);
private subA() : A(){
}
}
class factoryClass{
static A* createInstance(int type){
switch(type){
case 0:
return new A();
case 1:
default:
return new subA();
}
}
}
是否可以在Swift 4.2中做到这一点?我对此很陌生。
答案 0 :(得分:1)
是否可以使用fileprivate
关键字。
https://docs.swift.org/swift-book/LanguageGuide/AccessControl.html
class A {
fileprivate init() {
}
}
class SubA: A {
fileprivate override init() {
}
}
class FactoryClass {
static func createInstance(type: Int) -> A {
switch type {
case 0:
return A()
default:
return SubA()
}
}
}