ограничить создание объектов фабрикой в ​​swift 4 - PullRequest
0 голосов
/ 16 февраля 2019

У меня есть семейство классов в swift 4.2, и я хочу ограничить создание этих экземпляров только фабричным классом, в C ++ я могу применить это, объявив конструкторы частными и добавив ключевое слово friend в фабричный метод, напримерthis:

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 голосов
/ 16 февраля 2019

Возможно ли это с ключевым словом 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()
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...