模闆方法模式(封裝算法)
模闆方法模式在一個方法中定義一個算法的骨架,而将一些步驟延遲到子類中。模闆方法使得子類可以在不改變算法結構的情況下,重新定義算法中的某些步驟。
類圖:
對模闆方法進行挂鈎
鈎子是一種生命在抽象類中的方法,但是隻有空得或者預設的實作。
鈎子的存在,可以讓子類有能力對算法的不同點有能力挂鈎。要不要挂鈎,由子類決定。
鈎子範例:
要點:
- “模闆方法”定義了算法的步驟,把這些步驟的實作延遲到了子類。
- 模闆方法的抽象類可以定義具體方法,抽象方法,和鈎子。
- 抽象方法由子類實作
- 鈎子是一種方法,他在抽象類中不做事,或者制作預設的事,子類可以選擇要不要去覆寫它
- 為了防止子類修改模闆方法中的算法,可以将模闆方法聲明為 final
- 将決策權放在高層子產品中,一邊決定如何以及何時調用底層子產品
- 政策模式和模闆方法都封裝算法,一個用組合一個用繼承
- 工廠方法是模闆方法的一種特殊版本