建造者模式

2021-08-15 23:52:30 字數 2491 閱讀 3116

概念

builder模式也叫建造者模式或者生成器模式,是由gof提出的23種設計模式中的一種。builder模式是一種物件建立型模式之一,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承和過載的方式,動態地建立具有復合屬性的物件。

物件的建立:builder模式是為物件的建立而設計的模式- 建立的是乙個復合物件:被建立的物件為乙個具有復合屬性的復合物件- 關注物件建立的各部分的建立過程:不同的工廠(這裡指builder生成器)對產品屬性有不同的建立方法。

1) builder:為建立產品各個部分,統一抽象介面。

2) concretebuilder:具體的建立產品的各個部分,部分

a, 部分

b,部分c。

3) director:構造乙個使用

builder

介面的物件。

4) product:表示被構造的複雜物件。

concretebuilder建立該產品的內部表示並定義它的裝配過程,包含定義組成部件的類,包括將這些部件裝配成最終產品的介面。

適用情況:

乙個物件的構建比較複雜,將乙個物件的構建(?)和物件的表示

(?)進行分離。

建立者模式和工廠模式的區別

factory模式中:

1、有乙個抽象的工廠。

2、實現乙個具體的工廠

---汽車工廠。

3、工廠生產汽車

a,得到汽車產品a。

4、工廠生產汽車

b,得到汽車產品

b。  

這樣做,實現了購買者和生產線的隔離。強調的是結果。

builder模式

:1、引擎工廠生產引擎產品,得到汽車部件a。

2、輪胎工廠生產輪子產品,得到汽車部件b。

3、底盤工廠生產車身產品,得到汽車部件c。

4、將這些部件放到一起,形成剛好能夠組裝成一輛汽車的整體。

5、將這個整體送到汽車組裝工廠,得到乙個汽車產品。

這樣做,目的是為了實現複雜物件生產線和其部件的解耦。強調的是過程

兩者的區別在於:

factory模式不考慮物件的組裝過程,而直接生成乙個我想要的物件。

builder模式先乙個個的建立物件的每乙個部件,再統一組裝成乙個物件。

factory模式所解決的問題是,工廠生產產品。

而builder模式所解決的問題是工廠控制產品生成器組裝各個部件的過程,然後從產品生成器中得到產品。

builder模式不是很常用。模式本身就是一種思想。知道了就可以了。

設計模式就是一種思想。學習乙個模式,花上一兩個小時把此模式的意思理解了,就

夠了。其精華的所在會在以後工作的設計中逐漸體現出來。

#include using namespace std;

#include "string"

class house

void setwall(string wall)

void setwindow(string window)

//--

string getdoor( )

string getwall()

string getwindow()

private:

string m_door;

string m_wall;

string m_window;

};class builder

;//公寓工程隊

class flatbuilder : public builder

virtual void buildwall()

virtual void builddoor()

virtual void buildwindow()

virtual house* gethouse()

private:

house *m_house;

};//別墅 villa 工程隊

class villabuilder : public builder

virtual void buildwall()

virtual void builddoor()

virtual void buildwindow()

virtual house* gethouse()

private:

house *m_house;

};//設計師(指揮者) 負責建造邏輯

//建築隊 幹具體的活

class director

void construct()

private:

builder * m_build;

};void main()

建造者模式

1.定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。2.uml 類圖 結構 該結構 演示了複雜物件被一步一步建立的建造者模式。builder pattern structural example using system using system.collection...

建造者模式

軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...

建造者模式

建造者模式將複雜物件的構建和它的表示分離,使同樣的構建過程能夠構建出不同的表示。以乙個建造小人為例子,可以建造2種小人,胖子和瘦子 include using namespace std class builder 抽象建造者類 class buildthinman public builder 瘦...