Templateとなるクラスを用意し、必ず実装しなければならないメソッドを明示する。
TemplateClass.java (テンプレートとなるクラス)
package gof; abstract class TemplateClass { // abstractで定義されたメソッドは実装必須にする。 abstract protected void calc(); abstract protected void show(); // 呼び出されるメソッド。オーバライド禁止 (final) public final void execute(){ this.calc(); this.show(); } }
abstractで定義したcalcとshowメソッドが継承したクラスで必ず実装しなければならない。
TemplateSample.java (TemplateClassを継承したクラス)
package gof; public class TemplateSample extends TemplateClass { int num1; int num2; int result; //コンストラクタ public TemplateSample(int n1, int n2){ num1 = n1; num2 = n2; } //オーバーライドしたメソッド protected void calc(){ result = num1 + num2; } //オーバーライドしたメソッド protected void show(){ System.out.println(num1 + " + " + num2 + " = " + result); } }
calcとshowメソッドを実装する。
TemplateTest.java (実行用クラス)
package gof; public class TemplateTest{ public static void main(String args[]){ TemplateSample cls = new TemplateSample(20, 5); cls.execute(); } }