行爲型模式-TemplateMethod ( 模板方法 )

摘自《Java設計模式(瘋狂JAVA聯盟版)》


模板方法
 概述
    定義一個操作中的算法的骨架,而將一些步驟延遲到子類中。
    
    TemplateMethod使得子類可以不改變一個算法的結構即可重定義該算法的某些特定步驟。
 適用性
    1.一次性實現一個算法的不變的部分,並將可變的行爲留給子類來實現。

    2.各子類中公共的行爲應被提取出來並集中到一個公共父類中以避免代碼重複。
      首先識別現有代碼中的不同之處,並且將不同之處分離爲新的操作。
      最後,用一個調用這些新的操作的模板方法來替換這些不同的代碼。

    3.控制子類擴展。
			
 參與者
    1.AbstractClass
      定義抽象的原語操作(primitiveoperation),具體的子類將重定義它們以實現一個算法的各步驟。
      實現一個模板方法,定義一個算法的骨架。
      該模板方法不僅調用原語操作,也調用定義在AbstractClass或其他對象中的操作。

    2.ConcreteClass
      實現原語操作以完成算法中與特定子類相關的步驟。
 類圖
 例子
AbstractClass
public abstract class Template {

    public abstract void print();
    
    public void update() {
        System.out.println("開始打印");
        for (int i = 0; i < 10; i++) {
            print();
        }
    }
}
ConcreteClass
public class TemplateConcrete extends Template {

    @Override
    public void print() {
        System.out.println("這是子類的實現");
    }
}
Test
public class Test {

    public static void main(String[] args) {
        Template temp = new TemplateConcrete();
        temp.update();
    }
}
result
開始打印
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現
這是子類的實現

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章