[iOS 8] Swiftでデザインパターン No.4 Factory Method
Factory Method
Factory Method とは
英単語 Factory には以下のような意味があります。
- 工場
- 製造所
Factory Method パターンは、あるクラスのインスタンス化をサブクラスに任せるパターンです。
オブジェクトを生成するときのインターフェースだけを規定して、実際にどのクラスをインスタンス化するかはサブクラスに決めさせます。
クラス図
ポイント
- ConcreteCreator は factoryMethod() でインスタンスを生成する
サンプルコード
Product
class Product { }
ConcreteProduct
class ConcreteProduct: Product { }
Creator
class Creator { func factoryMethod() -> Product { fatalError("must be overridden") } func anOperation() { let product = factoryMethod() println("Product is (product)") } }
Swift のアクセス修飾子にprotectedは存在しません。
ConcreteCreator
class ConcreteCreator: Creator { override func factoryMethod() -> Product { return ConcreteProduct() } }
factoryMethod() で ConcreteProduct のインスタンスを生成しています。
実行
ConcreteCreator().anOperation()
実行結果
Product is FactoryMethod.ConcreteProduct
FactoryMethod.ConcreteProduct の部分は、{プロジェクト名}.{クラス名}となっています。
まとめ
- Swift のアクセス修飾子に protected は存在しない
- 存在するのは、public, private, internalの3つのみ