迅速将对象的创建限制到工厂

时间:2019-02-16 03:29:29

标签: ios xcode design-patterns factory-pattern swift4.2

我在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中做到这一点?我对此很陌生。

1 个答案:

答案 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()
        }
    }
}