學習設計模式(6) 建造者模式

2021-07-26 22:20:11 字數 1151 閱讀 5729

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.定義乙個構建產品部分或過程...