簡體   English   中英

協議的指定初始化程序類

[英]Designated Initializer Class for a Protocol

我想將協議名稱用作初始化程序。 像這樣:

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

class FooImpl : Foo { ... }

分配給foo時, let foo = Foo()FooImpl() 有沒有一種方法可以為協議指定“指定的初始化程序類”?

另一個選擇可能是:

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

以上可能嗎? 但是,不確定第二種情況是否可行,因為除非在Foo中實現屬性,否則無法在Foo聲明屬性。

我會在這里使用工廠模式:

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

...

let foo = FooFactory.createFoo()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM