1.介紹
這個模式,非常有用。
有時候,你的乙個類,有許多函式功能,你又不希望在這個類裡面再增加乙個管理函式呼叫的介面,但你又不希望用全域性變數來操作這批函式,怎麼辦?
你還可以用建造者模式。
2.具體使用說明
最經典的例子,莫過於《effective c++》條款23,寧以non-member,non-friend替換member函式。
我就是從這裡學的建造者模式。雖然在meyers大師的書中,沒有在此處提到建造者模式,但我認為這裡非常符合建造者模式的設計思路。
在書中的p100~p101提到:
在c++,比較自然的做法是.....所在同乙個namespace(命名空間)內。要知道,namespace和classes不同,前者可跨越多個原始碼檔案而後者不能。這很重要,....
將所有便利函式放在多個標頭檔案內但隸屬同乙個命名空間,意味著客戶可以輕鬆擴充套件這一組便利函式。
3.網路上常見的好理解的**
class builder
virtual void buildbody() {}
virtual void buildleftarm(){}
virtual void buildrightarm() {}
virtual void buildleftleg() {}
virtual void buildrightleg() {}
};
//構造瘦人
class thinbuilder : public builder
};
int main()
//
4. 我理解的建造者模式的**
namespace webbrowserstuff ;
void dosomething(webbrowser& wb); }
你可以把你要建造的全部函式功能,寫道類裡面。
然後,你把你要組裝時,用到某些函式,寫道namespace裡面,這樣,就非常方便自己組合了,
用什麼功能,不用什麼功能,就在dosomething()這個函式裡面,隨意使用就好,完全不會破壞原來的類webbrowser的封裝性,實現了高內聚-低耦合。
------------------------
設計模式 6 建造者模式
建造則模式 將乙個複雜的物件的構建與它的表示分離,是的同樣的構建過程可以建立不同的表示。我要組裝一台電腦,電腦被抽象為computer類,它有三個部件 cpu 主機板和記憶體。並在裡面提供了三個方法分別用來設定cpu 主機板和記憶體 產品類 一般是乙個較為複雜的物件,也就是說建立物件的過程比較複雜,...
設計模式 6 建造者模式
建造者模式,是將乙個構建過程複雜的物件的構建過程和物件的表示分離,該模式主要關注的是構建過程。假設建造房子,無論是搭個茅草屋還是建造宮殿都需要打地基 建造牆壁,修建屋頂這幾個步驟,如下 產品類 public class house 抽象建造者 public abstract class houseb...
學習設計模式 建造者模式
說明 如果你需要將乙個複雜的物件或功能的構建流程和表示分離,使得同樣的構建流程,也可以建立出不同的表示,例如麥當勞做炸東西,炸東西的流程是一樣的,但放入的材料不同,炸出來的東西不一樣 例如雞排 雞腿 雞翅等 需求 使用者要個炸雞腿 解決方式 a.定義乙個產品類 炸東西 b.定義乙個構建產品部分或過程...