テンプレートモードの詳細


テンプレートモード(Template):
テンプレートモード:
動作中のアルゴリズムの骨格を定義して、いくつかのステップをサブクラスに拡張して、サブクラスがアルゴリズムの構造を変えずに、アルゴリズムの特定のステップを再定義することができる.ここで多重化が必要なのはアルゴリズムの構造、すなわちステップであり、ステップの実現はサブクラスで行われてもよい.
 
テンプレート方法の構成
–親の役割:テンプレートを提供します.
–サブクラスの役割:テンプレートの実現を提供します.
 
プログラムの例:
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