設計模式學習(八)模板方法模式

2021-10-05 12:11:40 字數 1065 閱讀 1998

在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。

別呼叫我們,我們會呼叫你。也就是高層元件來決定什麼時候呼叫低層元件。

我們需要製作咖啡和茶。

咖啡的製作步驟:

1.把水煮沸

2.用沸水沖泡咖啡

3.把咖啡倒入杯子

4.加糖和牛奶

茶的製作步驟:

1.把水煮沸

2.用沸水沖泡茶葉

3.把茶倒入杯子

4.加檸檬

沖泡咖啡和茶,其中不乏相同之處,需要我們進行整理設計一下。**如下,

1.抽象出超類,將不同的地方單獨封裝

public abstract class caffeinebeverage 

}abstract void brew();

abstract void addcondiments();

void boilwater()

void pourincup()

void addsugar()

boolean ifaddsugar()

}

2.處理茶和咖啡

public class tea extends caffeinebeverage 

@override

void addcondiments()

//茶不需要加糖

@override

boolean ifaddsugar()

}

public class coffee extends caffeinebeverage 

@override

void addcondiments()

}

3.測試

設計模式學習(八) 模板方法模式

這是個人學習程式設計模式的系列學習筆記第八篇。採用qt creator進行編寫,但盡量採用c 基礎語法。模板方法模式 template method 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。如果有乙個場景,從高層次來...

設計模式(八) 模板方法模式

設計模式 八 模板方法模式 這幾天雜七雜八的事有點多,停了幾日,今日繼續,今天講最簡單的模板方法,但是卻是用的比較廣泛的。首先來明確下概念吧,模板方法的寫法是這樣,準備乙個抽象類,將部分邏輯以具體方法以及具體建構函式的形式實現,然後宣告一些抽象方法來迫使子類實現剩餘的邏輯。不同的子類可以以不同的方式...

設計模式(八)模板方法模式

它的定義為 定義乙個操作中的演算法的框架,而將一些步驟延遲到子類中。使得子類可以不改變乙個演算法的結構即可重新定義該演算法的某些特定步驟。說的通俗一點,就是為子類設計乙個模板以便於子類復用裡面的方法。為了避免子類惡意修改方法的實現細節,一般模板方法模式都會在方法上加final。我們以泡茶和衝咖啡為例...