テンプレートモードの詳細
1454 ワード
テンプレートモード(Template):
テンプレートモード:
動作中のアルゴリズムの骨格を定義して、いくつかのステップをサブクラスに拡張して、サブクラスがアルゴリズムの構造を変えずに、アルゴリズムの特定のステップを再定義することができる.ここで多重化が必要なのはアルゴリズムの構造、すなわちステップであり、ステップの実現はサブクラスで行われてもよい.
テンプレート方法の構成
–親の役割:テンプレートを提供します.
–サブクラスの役割:テンプレートの実現を提供します.
プログラムの例:
ステップ2
ステップ3
テンプレートモード:
動作中のアルゴリズムの骨格を定義して、いくつかのステップをサブクラスに拡張して、サブクラスがアルゴリズムの構造を変えずに、アルゴリズムの特定のステップを再定義することができる.ここで多重化が必要なのはアルゴリズムの構造、すなわちステップであり、ステップの実現はサブクラスで行われてもよい.
テンプレート方法の構成
–親の役割:テンプレートを提供します.
–サブクラスの役割:テンプレートの実現を提供します.
プログラムの例:
package com.zp.pattern.template;
/**
* : , ;
* , , ;
*/
public abstract class Template {
// ( ):
public void doTemplate(){
this.method1();
this.method2();
this.method3();
}
// :
public abstract void method1();
public abstract void method2();
public abstract void method3();
}
package com.zp.pattern.template;
/**
* : 。
*/
public class TemplateImpl extends Template {
@Override
public void method1() {
System.out.println("step1");
}
@Override
public void method2() {
System.out.println("step2");
}
@Override
public void method3() {
System.out.println("step3");
}
//
// @Override
// public void doTemplate() {
// this.method3();
// this.method2();
// this.method1();
// }
}
package com.zp.pattern.template;
public class Test {
public static void main(String[] args) {
Template t = new TemplateImpl();
t.doTemplate();
}
}
結果:ステップ1ステップ2
ステップ3