しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

Swiftで学ぶデザインパターン3 (FactoryMethod パターン)

今回はFactoryMethodパターンについて書いていきます。

デザインパターンとは

デザインパターンとはソフトウェア開発の設計方法の事です。
オブジェクト指向における再利用のためのデザインパターン』という本が出典で、全部で23種類のパターンが紹介されています。

FactoryMethod パターンとは

FactoryMethod パターンとはインスタンス生成に関するパターンです。
具体的にはインスタンスの生成をメソッド化する事でインスタンス生成を柔軟に変更できるものになります。
TemplateMethodパターンと併用される事が多いパターンです。

SwiftでのFactoryMethod パターンの実装方法

SwiftでのFactoryMethod パターンは下のように記述します。
ポイントとしては、SuperClassinitの中です。
itemのセットをItem1()と直接インスタンス生成せずにcreateItem()を介して行っています。
そうする事で、サブクラスでcreateItem()をオーバーライドするだけでitemへセットする値を変える事ができます。
このようにインスタンス生成をメソッド化するパターンをFactoryMethodパターンと呼びます。

class SuperClass {
    var item: Item
    init() {
        item = createItem()
        // 初期化処理
        // …
    }
    
    func createItem() -> Item {
        return Item1()
    }
}

class SubClass: SuperClass {
    override func createItem() -> Item {
        return Item2()
    }
}

class Item {}
class Item1: Item {}
class Item2: Item {}

オブジェクト指向における再利用のためのデザインパターン

オブジェクト指向における再利用のためのデザインパターン