依賴倒置原則
開放封閉原則
單一職責原則
liskov替換原則
介面隔離原則
優先使用物件組合,而不是類繼承
封裝變化點
針對介面設計,不針對具體實現設計
動機在乙個穩定的整體操作結構中,各個子步驟延遲到子類中,模板方法使得子類可以不改變乙個演算法的結構即可重新定義該演算法的某些特定步驟。
定義在乙個方法中定義乙個演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變演算法結構的情況下,重新定義演算法中的某些步驟。
**實現
public abstract class caffeinebeverage
abstract void brew(); // 由子類決定以下兩個方法的具體實現,父類只規定**執行的流程。
abstract void addcondiments();
void biolwater()
void pourincup()
}
在父類中還可以有一種方法,通過該方法作為判定條件,來改變模板方法模板的執行流程。子類可以重寫該方法,進而該百年父類中規定的模板流程。
具體**如下:
public abstract class caffeinebeveragewithhook
}abstract void brew(); // 由子類決定以下兩個方法的具體實現,父類只規定**執行的流程。
abstract void addcondiments();
void biolwater()
void pourincup()
boolean customerwantscondiments() //該方法允許被子類重寫,從而改變返回值,進而更改preparerecipe() 方法的執行流程。
}
模板方法在框架設計方面有著非常重要的地位。 模版方法模式 學習設計模式
做個筆記 引用 public abstract class templateclass public void pouroil public void heatoil 做的蔬菜不一樣 所以宣告為抽象方法 讓子類去重寫 abstract void pourvegetable 放的調料 口味 不一樣 宣...
設計模式 模版方法模式
模版方法模式說明 定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模版方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。模版方法模式就是提供了乙個很好的 復用平台,是通過把不變行為搬移到超類,去除子類的重複 來體現它的優勢。下面直接看此模式的簡單模版 抽象模版,定義並實...
設計模式 模版方法模式
模版方法模式 定義一下操作中的演算法骨架,而將一些步驟延遲到子類中。模版方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。模版方法模式結構圖 abstractclass是抽象類,其實也就是一抽象模版,定義並實現了乙個模版方法。這個模版方法一般是乙個具體方法,它給出了乙個頂級邏輯...