协议的指定初始化程序类

时间:2014-07-18 21:44:10

标签: swift

我想使用协议名称作为初始化程序。像这样:

protocol Foo { ... }
protocol Bar : Foo { ... }

class FooImpl : Foo { ... }

let foo = Foo()在分配给FooImpl()时将遵从foo。有没有办法为协议指定“指定初始化程序类”?

另一种选择可能是:

class Foo {
  class FooImpl { ... }
  init () {
    // somehow create a FooImpl
  }
}

以上可能吗?但是,不确定第二种情况是否切合实际,因为除非在Foo中实现属性,否则无法在{{1}}中声明属性。

1 个答案:

答案 0 :(得分:0)

我在这里使用工厂模式:

class FooFactory {
  class func createFoo -> Foo {
    return FooImpl()
  }
}

...

let foo = FooFactory.createFoo()