模板方法模式:定義乙個操作中的演算法的骨架,而將一些步驟延遲到子類中。模板方法使得子類可以不改變乙個演算法的結構即可重定義該演算法的某些特定步驟。
適用的乙個時機:當我們要完成在某一細節層次一致的乙個過程或一系列步驟,但其個別步驟在更詳細的層次上的實現可能不同時,我們通常考慮用模板方法模式來處理。
模板方法的兩個角色:
抽象類(abstractclass): 給出頂級邏輯的框架
具體產品類(concreteclass):實現父類所定義時的乙個或多個抽象方法。乙個abstractclass可以有多個concreteclass。
結構圖:
測試用例:
int main()
模板方法實現:
class abstractclass
protected:
virtual
void primitiveoperation1()
virtual
void primitiveoperation2()
};class concreteclassa: public abstractclass
virtual
void primitiveoperation2()
};class concreteclassb: public abstractclass
virtual
void primitiveoperation2()
};
模板方法特點:模板方法模式是通過把不變行為搬移到父類,去除子類中的重複**來體現它的優勢。
模板方法模式就是提供了乙個很好的**復用平台。
C 設計模式淺識裝飾模式
裝飾模式 動態的給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。裝飾模式的四個角色 元件類 component 具體元件類 coneretecomponent 裝飾類 decorator 從外類來擴充套件component類的功能,但對於component來說是無需知道de...
C 設計模式淺識單例模式
什麼是單例模式?保證乙個類只有乙個例項,並提供乙個訪問它的全域性訪問點。dp 讓類的自身負責儲存它的唯一例項,這個類保證沒有其他例項可以被建立,並且此類可以提供乙個訪問該例項的方法。dp 什麼時候需要單例模式?程式只需要乙個方法控制某項功能,不允許建立第二個此功能。比如 銀行使用的取號機。使用單例模...
C 設計模式淺識職責鏈模式
職責鏈模式 chainofresponsibility 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間的耦合關係。將這個物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。職責鏈的好處 當客戶提交乙個請求時,請求時沿鏈傳遞直至有乙個concretehandler物件負責處...