設計模式 模板方法模式 Java

2021-07-25 22:56:03 字數 1484 閱讀 6495

模板方法模式(template),定義乙個操作中演算法的框架,而將一些步驟延遲到子類中。模板方法模式使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。

舉個栗子:小明想在學習過後去運動或者上會網,那麼小明在學習某門課程過後一定會搞點事情,而這些事情是可變化的,誰也不知道他要幹什麼,所以我們需要在它需要的時候進行「實現」。

類圖

示例**

//package com.dlut.designpattern.template;

public

abstract

class

abstractclass ;//鉤子方法

public

abstract

void learn();

public

abstract

void afterlearn();

public

final

void templatemethod()

}class

exerciseafterlearn

extends

abstractclass

public

void afterlearn()

}class

internetafterlearn

extends

abstractclass

public

void learn()

public

void afterlearn()

}

public

class client

}

輸出結果:

學英語:a,b,c…

打籃球去…

預習化學…

學化學:氫氦鋰鈹硼…

刷刷微博…

在**中,我們可以看到乙個新的概念:鉤子方法。

鉤子方法:由乙個抽象類或具體類宣告並實現,而其子類可能會加以擴充套件。通常在父類中給出的實現是乙個空實現,並以該空實現作為方法的預設實現,當然鉤子方法也可以提供乙個非空的預設實現。

這樣使得我們的模式有了一定的可擴充套件性。

模版方法:由抽象類宣告並加以實現。一般來說,模版方法呼叫抽象方法來完成主要的邏輯功能,並且,模版方法大多會定義為final型別,指明主要的邏輯功能在子類中不能被重寫。

模板方法模式也有其缺點:需要為每乙個基本方法的不同實現提供乙個子類,如果父類中可變的基本方法太多,將會導致類的個數呈**型增長,設計也更加抽象。此時,可結合橋接模式來進行設計。

參考:

java設計模式 模板方法模式

在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計模式屬於行為型模式。準備乙個抽象類,將部分邏輯以具體方法的形式實現,然後宣告一些抽象方法交由子類實現剩餘邏輯,有鉤子方法給予...

JAVA設計模式 模板方法模式

模板方法模式是一種行為型設計模式。其思想是 將部分邏輯以具體方法的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯,不同的子類可以以不同的方式實現這些抽象方法,從而對剩餘的邏輯有不同的實現。模板方法模式涉及到2個角色 具體模板 concrete template 結構圖 具體 實現 publi...

java設計模式 模板方法模式

模板方法模式是乙個使用非常廣泛的設計模式,比較簡單,它主要是定義乙個操作中的演算法框架,而將一些步驟延遲到子類中,使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。我們這裡以不同的人的每天來舉例 首先定義乙個類,類中定義了 起床getup 洗漱washing 生活方式process...