我想使用协议名称作为初始化程序。像这样:
protocol Foo { ... }
protocol Bar : Foo { ... }
class FooImpl : Foo { ... }
let foo = Foo()
在分配给FooImpl()
时将遵从foo
。有没有办法为协议指定“指定初始化程序类”?
另一种选择可能是:
class Foo {
class FooImpl { ... }
init () {
// somehow create a FooImpl
}
}
以上可能吗?但是,不确定第二种情况是否切合实际,因为除非在Foo
中实现属性,否则无法在{{1}}中声明属性。
答案 0 :(得分:0)
我在这里使用工厂模式:
class FooFactory {
class func createFoo -> Foo {
return FooImpl()
}
}
...
let foo = FooFactory.createFoo()