設定泡咖啡和泡茶兩個類,步驟如下:
放水放咖啡/茶
步驟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設計模式之模板方法模式
在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中,使得子類可以不改變演算法結構的情況下,重定義該演算法中的某些特定步驟。比較通俗的說法,子類決定如何實現演算法中的某些步驟,比如兩個一連串的操作,操作次序是一樣的,有的操作相同,有的不同,將兩個連串操作抽象出父類 子類在相同次序,但具體方法不...