エンジニアのひよこ_level10

【毎日更新!】新卒2年目エンジニアブログです! プログラムだけじゃなく、マネジメントとかも書いていきたい!

【デザパタ勉強】テンプレートメソッドパターンの嬉しいところ【353日目】

コード

template-method by klack710 · Pull Request #6 · klack710/study-design_pattern · GitHub

使う側

public class Main {
    public static void main(String args[])
    {
        ConcreteDotPrint cdp = new ConcreteDotPrint();
        ConcreteLinePrint clp = new ConcreteLinePrint();
        cdp.templatePrint("dot");
        clp.templatePrint("line");
    }
}

結果

...
dot
...
---
line
---

どゆこと?

public abstract class AbstractPrint {
    public abstract void firstLine();
    public abstract void print(String str);
    public abstract void lastLine();

     // 基本の動作をここで記述
    public void templatePrint(String str) {
        this.firstLine();
        this.print(str);
        this.lastLine();
    }
} 

templatePrintの中に、基本動作がある。

この基本動作に含まれている、firstLineとかをオーバーライドして実装する。

何が嬉しいの?

firstLineみたいなパーツをオーバーライドで実装できる。

これは、似た動作をするものをどんどんたくさん作れる。AbstractPrintを継承したら、ドットやライン以外にも、
いろんな枠が作れる。テンプレートが作れる。

おかしな部分を見つけたら、簡単に治せる。各パーツ毎におかしな動きを見つけたら、
すぐにそこを直せばいいって気がつける。

簡単、汎用性が高いので、身近でも結構使われているかも?