しめ鯖日記

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

Swiftで学ぶデザインパターン4 (Template Method パターン)

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

デザインパターンとは

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

Template Method パターンとは

Template Method パターンとはFactoryMethodパターンに似ていてクラスの継承を使うパターンです。
事前に用意した抽象クラスを継承することで必要最低限のコードで処理を実装できるパターンです。

SwiftでのTemplate Method パターンの実装方法

SwiftでのTemplate Method パターンは下のように記述します。
AnimalクラスでsetPosion()を定義してinitの中で呼んでいます。
AnimalのサブクラスではsetPosion()をオーバーライドしてx,yをセットする事ができます。

class Animal {
    var x: Int = 0
    var y: Int = 0
    
    init() {
        self.setPosion()
        // 他の初期化処理
        // …
    }
    
    func setPosion() {
        x = 0; y = 0
    }
}

class crane: Animal {
    override func setPosion() {
        x = 10; y = 0
    }
}

class dog: Animal {
    override func setPosion() {
        x = 30; y = 20
    }
}

Template Method パターンの長所・使いどころ

Template Method パターンはうまく使えば非常にコードが短く書けます。
そしてメソッド名も親クラスをオーバーライドするだけなので命名に悩む事もなくなります。
しかし親クラスに修正を加える際の影響範囲が広いので変更の多いアプリでは使いにくいかもしれません。

関連するパターン

llcc.hatenablog.com

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

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