コード
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を継承したら、ドットやライン以外にも、
いろんな枠が作れる。テンプレートが作れる。
おかしな部分を見つけたら、簡単に治せる。各パーツ毎におかしな動きを見つけたら、
すぐにそこを直せばいいって気がつける。
簡単、汎用性が高いので、身近でも結構使われているかも?