將乙個複雜物件的構建與其表示相分離,使得同樣的構建過程(穩定)可以建立不同的表示(變化)。 ——《設計模式》gof
class
house
;class
housebuilder
virtual
~housebuilder()
protected
:
house* phouse;
virtual
void
buildpart1()
=0;virtual
void
buildpart2()
=0;virtual
void
buildpart3()
=0;virtual
void
buildpart4()
=0;virtual
void
buildpart5()
=0;}
;class
stonehouse
:public house
;class
stonehousebuilder
:public housebuilder
virtual
void
buildpart2()
virtual
void
buildpart3()
virtual
void
buildpart4()
virtual
void
buildpart5()
};class
housedirector
house*
construct()
bool flag=phousebuilder-
>
buildpart3()
;if(flag)
phousebuilder-
>
buildpart5()
;return phousebuilder-
>
getresult()
;}};
注:housebuilder與housedirector寫在一起也沒什麼問題,主要看類的複雜程度,如果太複雜則抽離抽離抽離…
設計模式(11) 直譯器模式
給定乙個語言,定義乙個文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。如果一種特定型別的問題發生的頻率足夠高,那麼可能就值得將該問題的各個例項表述為乙個簡單語言中的句子,這樣就可以構建乙個直譯器,該直譯器通過解釋這些句子來解決該問題。就比如正規表示式,它就是直譯器模型的一種...
設計模式11 裝飾器
裝飾器模式 decorator pattern 允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。意圖 動態地給乙個物件新增一些額外的職責...
設計模式入門筆記(1 1)
設計模式是一種用於 設計的經驗總結。helloworld是不需要使用設計模式的,設計模式的主要應用場景是在大型應用的構建上,假想一下,在2萬行 中增加功能,如果程式可讀性差,將難以擴充套件和優化。所以,設計模式主要聚焦 注 面對物件三大特點 抽象與例項 舉個栗子 以吃早餐為例,每天早晨都會吃早餐,但...