HeadFirst設計模式 模板方法模式

2021-10-04 10:34:06 字數 682 閱讀 6953

設定泡咖啡和泡茶兩個類,步驟如下:

放水放咖啡/茶

步驟1是共有的。可以設定乙個抽象類,實現方法1,定義方法2並由子類實現。

乙個例子就是對物件進行sort,sort裡的compareto方法由物件自己定義。

模板方法模式可以設定鉤子方法。比如init/stop/destroy時設定響應的鉤子但不實現或使用預設實現,通過子類實現來獲得特有的功能。鉤子讓子類有能力為其抽象類做一些決定。

public

abstract

class

preparedrink

void

putwater()

;abstract

void

putcontent()

;}

public

class

preparecoffee

extends

preparedrink

}

public

class

preparetea

extends

preparedrink

}

public

class

testt

}

《Head First 設計模式》 模板方法模式

模板方法模式在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。要點 模板方法一般宣告為 final,以免子類改變演算法的步驟。抽象類中,可以宣告一些鉤子方法,子類視情況決定要不要覆蓋它們。鉤子的存在,可以讓子類有能...

HeadFirst 設計模式 8模板方法模式

模板方法模式 在乙個方法中定義乙個演算法的骨架,並將一些步驟延遲到子類中。模板方法使得子類可以在不改變演算法結構的情況下,重新定義演算法中的某些步驟。增加乙個hook 方法後 注意 此處的hook 鉤子 是一種被宣告在抽象類中的方法,但是只有空的或缺省的實現。hook 的存在可以讓子類能夠對演算法的...

Head First設計模式之模板方法模式

在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變演算法結構的情況下,重定義該演算法中的某些特定步驟。比較通俗的說法,子類決定如何實現演算法中的某些步驟,比如兩個一連串的操作,操作次序是一樣的,有的操作相同,有的不同,將兩個連串操作抽象出父類 子類在相同次序,但具體方法不...