1. 程式人生 > >操作型模式之Template Method(模板方法)模式

操作型模式之Template Method(模板方法)模式

1.如果你期望在一個方法中實現一個演算法,把演算法中的某些步驟的定義推遲到子類中去重新定義,可使用Template Method(模板方法)模式
2.舉例

//演算法框架抽象類
public abstract class AbstractMethod {
    abstract void one();
    abstract void twe();

    void templateMethod(){
        switch (hook()) {
        case 0:
            one();
            twe();
            break
; case 1: one(); break; case 2: twe(); break; default: break; } } protected int hook(){ return 0; } }
//第一個演算法
public class FirstMethod extends AbstractMethod{

    @Override
    void one() {
        // TODO Auto-generated method stub
System.out.println("FirstMethod類 :one() ..."); } @Override void twe() { // TODO Auto-generated method stub System.out.println("FirstMethod類 :twe() ..."); } }
//第二個演算法:重寫hook()方法
public class SecondMethod extends AbstractMethod{

    @Override
    void one() {
        // TODO Auto-generated method stub
System.out.println("SecondMethod類 :one() ..."); } @Override void twe() { // TODO Auto-generated method stub System.out.println("SecondMethod類 :one() ..."); } @Override protected int hook() { // TODO Auto-generated method stub return 2; } }
//測試類
public class Test {
    public static void main(String[] args){
        FirstMethod firstMethod = new FirstMethod();
        SecondMethod secondMethod = new SecondMethod();

        firstMethod.templateMethod();
        secondMethod.templateMethod();
    }
}   
//結果
FirstMethod類 :one() ...
FirstMethod類 :twe() ...
SecondMethod類 :one() ...

3.總結:Template Method(模板方法)模式的目的就是在一個方法中實現一個演算法,並將演算法中某些步驟的定義推遲,從而使得其他類可以重新定義這些步驟。該模式通常可以作為開發人員之間的某種約束。一個開發人員提供演算法的框架,另一個開發人員則提供演算法某些步驟的具體實現。這也許是需要演算法實現的步驟,或者是演算法的開發人員在演算法中某一位置設定的鉤子(hook)。
4.參考:http://haolloyin.blog.51cto.com/1177454/333063/