Template Methodテンプレートメソッド-デザインパターンの勉強
Template Methodテンプレートメソッドのお勉強。
このデザインパターンはスーパークラスで処理の流れを決めて、サブクラスで具体的な処理を実装します。
クラス | 説明 |
---|---|
Calc.java | スーパークラス テンプレートメソッド |
Tashizan.java | サブクラス |
Kakezan.java | サブクラス |
Main.java | テスト用クラス |
Calc.java 1 public abstract class Calc { 2 public final void proc() { //final宣言によりこのメソッドはオーバライドできない 3 print(); 4 calc(); 5 finish(); 6 } 7 protected abstract void print(); //protectedにより、サブクラスでないとオーバライドできない 8 protected abstract void calc(); 9 protected abstract void finish(); 10 }
Tashizan.java 1 public class Tashizan extends Calc { 2 int i; 3 int j; 4 public Tashizan (int i,int j) { 5 this.i = i; 6 this.j = j; 7 } 8 protected void print() { 9 System.out.print(i +"+" +j +" = "); 10 } 11 protected void calc() { 12 System.out.println(i+j); 13 } 14 protected void finish() { 15 System.out.println("足し算終了"); 16 } 17 }
Kakezan.java 1 public class Kakezan extends Calc { 2 int i; 3 int j; 4 public Kakezan (int i,int j) { 5 this.i = i; 6 this.j = j; 7 } 8 protected void print() { 9 System.out.print(i +"*" +j +" = "); 10 } 11 protected void calc() { 12 System.out.println(i*j); 13 } 14 protected void finish() { 15 System.out.println("かけ算終了"); 16 } 17 }
Main.java 1 public class Main { 2 public static void main(String[] args) { 3 Calc calc1 = new Tashizan(1,1); 4 calc1.proc(); 5 Calc calc2 = new Kakezan(2,2); 6 calc2.proc(); 7 } 8 }
実行してみる。
$ java Main 1+1 = 2 足し算終了 2*2 = 4 かけ算終了
わーい。