建造者模式

2021-09-24 07:31:16 字數 2104 閱讀 4445

如果我們需要建立乙個類,但是這個類中部件比較多,功能複雜。(建造者模式在乙個物件的構建比較複雜時,將物件的構建 《產品的建造過程》 和物件的表示 《實際的產品》 進行分離)

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

2、concretebuilder:具體的建立產品的各個部分,部分1,部分2,部分3。。。

3、director:構造乙個使用builder介面的物件。

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

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

試著想象一下,如果不把建造的業務邏輯抽象出來,那麼工程隊的類中將會包含造單一部件的部分和造整個房子時需要造各個部件的業務邏輯。如果我們下一次造的房子不想要陽台,那就得要修改builder的**,耦合度還是比較高的,所以在這裡再隔離出乙個director。

上**吧,小妖怪

#include

#include

using

namespace std;

//房子

class

house

void

setwindow

(string s)

void

setdoor

(string s)

void

setwall

(string s)

void

setbalcony

(string s)

string getwindow()

string getdoor()

string getwall()

string getbalcony()

};//工程隊

class

builder

virtual

void

buildwindow()

=0;virtual

void

builddoor()

=0;virtual

void

buildwall()

=0;virtual

void

buildbalcony()

=0;virtual house*

gethouse()

=0;protected

: house * m_house;};

//別墅工程隊

class

villabuilder

:public builder

void

buildwindow()

void

builddoor()

void

buildwall()

void

buildbalcony()

house*

gethouse()

};//平房工程隊

class

bungalowbuilder

:public builder

void

buildwindow()

void

builddoor()

void

buildwall()

void

buildbalcony()

house*

gethouse()

};//公寓工程隊

class

apartmentbuilder

:public builder

void

buildwindow()

void

builddoor()

void

buildwall()

void

buildbalcony()

house*

gethouse()

};//設計師

//設計師負責指揮工程隊的裝配過程

class

director

void

construct()

private

: builder* builder;};

intmain()

建造者模式

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

建造者模式

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

建造者模式

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