首頁 > Java > java教程 > 主體

案例詳解java23種設計模式:模版方法模式(附程式碼)

php是最好的语言
發布: 2018-07-30 10:52:49
原創
1567 人瀏覽過

定義

定義演算法中的操作框架,而將一些步驟延遲到子類別中。使得子類別可以不改變演算法結構即可重定義該演算法的某些特定步驟。

角色

此設計模式的角色分割較為簡單

  • 抽像模版類別

  • 具體模版類別

抽像模版類別又包含了這樣幾個方法:模版方法,具體方法,抽象方法,勾子方法。

  • 模版方法

決定了演算法的實作步驟,該方法中呼叫了具體方法,待實作的抽象方法,勾子方法等。是演算法執行的一個模版。

  • 具體方法

具體方法是演算法中較穩穩定的部分,所以在抽象類別中給出了方法的具體實作。

  • 抽象方法

抽象方法正是定義中所說的延遲到子類別實作的方法。

  • 勾子方法

一般模版方法會給出預設實現,子類別中看情況對這個方法進行覆寫重寫。

UML

實作過程

/**
 * Created by tiantian on 2018/7/28
 */public abstract class AbstractTemplateMethod {

    public void templateMethod() {
        implementedMethod();
        abstractMethod();
        hookMethod();        // ... more than method invoke
    }    public void anotherTemplateMethod() {        // do other things
    }    public abstract void abstractMethod();    public void hookMethod() {}    public void implementedMethod() {
        System.out.println("I have been implemented in TemplateMethod class.");
    }    // ... more than method abstract or implemented.}
登入後複製
登入後複製
/**
 * Created by tiantian on 2018/7/28
 */public class ConcreteTempleteMethod extends AbstractTemplateMethod {
    @Override
    public void abstractMethod() {
        System.out.println("Do something");
    }    @Override
    public void hookMethod() {
        System.out.println("Do something in hookMethod");
    }
}
登入後複製
登入後複製

定義

定義演算法中的操作框架,而將一些步驟延遲到子類別中。使得子類別可以不改變演算法結構即可重定義該演算法的某些特定步驟。

角色

此設計模式的角色分割較為簡單

  • #抽像模版類別

  • 特定模版類別

抽像模版類別又包含了這樣幾個方法:模版方法,具體方法,抽象方法,勾子方法。

  • 模版方法

決定了演算法的實作步驟,該方法中呼叫了具體方法,待實作的抽象方法,勾子方法等。是演算法執行的一個模版。

  • 具體方法

具體方法是演算法中較穩穩定的部分,所以在抽象類別中給出了方法的具體實作。

  • 抽象方法

抽象方法正是定義中所說的延遲到子類別實作的方法。

  • 勾子方法

一般模版方法會給出預設實現,子類別中看情況對這個方法進行覆寫重寫。

UML

實作過程

/**
 * Created by tiantian on 2018/7/28
 */public abstract class AbstractTemplateMethod {

    public void templateMethod() {
        implementedMethod();
        abstractMethod();
        hookMethod();        // ... more than method invoke
    }    public void anotherTemplateMethod() {        // do other things
    }    public abstract void abstractMethod();    public void hookMethod() {}    public void implementedMethod() {
        System.out.println("I have been implemented in TemplateMethod class.");
    }    // ... more than method abstract or implemented.}
登入後複製
登入後複製
/**
 * Created by tiantian on 2018/7/28
 */public class ConcreteTempleteMethod extends AbstractTemplateMethod {
    @Override
    public void abstractMethod() {
        System.out.println("Do something");
    }    @Override
    public void hookMethod() {
        System.out.println("Do something in hookMethod");
    }
}
登入後複製
登入後複製

相關文章:

##Java設計模式-設計模式的六種原則

JAVA設計模式之工廠模式(簡單工廠模式工廠方法模式)

相關影片:

設計模式

以上是案例詳解java23種設計模式:模版方法模式(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!