4 建立型模式 建造者模式

2021-09-22 07:54:27 字數 1954 閱讀 7227

模式動機:乙個物件由若干部件組成,而組合這些部件的過程比較複雜,因此可以把這個組合工作交給建造者來完成,建造這返回給客戶的是乙個組裝好的物件。

模式定義(builder pattern)將乙個複雜物件的構建與表示分離開來,使得同樣的構建過程可以建立不同的表示形式。

模式結構圖:

其中包含抽象建造者builder、具體建造者concretebuilder、指揮者director、產品product。該模式中引入了director,負責控制產品的生產及其與使用者的隔離工作。director針對抽象建造者builder程式設計,客戶只要知道具體建造者concretebuilder的型別就能得到乙個完整的產品。

模式**:

bt_建造者模式.h

#ifndef bp_h

#define bp_h

#include using namespace std;

/* 產品類

*/class product

void seta(const string& a)

const string& getb() const

void setb(const string& b)

const string& getc() const

void setc(const string& c)

private:

string parta;

string partb;

string partc;

};/*

抽象建造者類

*/class builder

; virtual void buildparta() = 0;

virtual void buildpartb() = 0;

virtual void buildpartc() = 0;

virtual product* getresult() = 0;

};/*

具體建造者類

*/class concretebuilder : public builder

virtual void buildparta()

virtual void buildpartb()

virtual void buildpartc()

virtual product* getresult()

private:

product* product;

};/*

指揮者類

*/class director

product* construct()

private:

builder* builder;

};#endif // bp_h

bt_建造者模式.cpp

#include "bt_建造者模式.h"

#include using namespace std;

int main()

模式優缺點:使用不同的具體建造者,使用者可以得到不同的具體物件;增加新的建造者無需修改抽象類即可更改建造方式,因此,對於產品內部組成部分不變的情況下,可以很容易實現花樣建造,符合「開閉原則」; 但是如果產品內部發生變化,那麼就必須修改建造者。

建立型模式(4) 建造者模式

肯德基做漢堡的過程都是有嚴格的規範的,不管是麥香雞腿堡還是紐奧良烤雞腿堡,他們的製作步驟都是有嚴格規定,做漢堡的人既不能多做一步,也不能少做一步。對於不同的漢堡來說,雖然每一步加的料所有不同,但做漢堡的步驟都是一樣的。因為有了對做漢堡過程的嚴格控制,因而全國所有的肯德基店做出來的漢堡味道都是一樣的。...

建立型模式 建造者模式

建造者模式 builder pattern 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。與抽象工廠的區別 在建造者模式裡,有個指導者,由指導者來管理建造者,使用者和指導聯絡,指導者聯絡建造者最後得到產品牌。即建造模式可以強制實現一種分步驟進行的建造過程。建造者模式將複雜...

建立型模式 建造者模式

這段時間剛好要觀摩持久層框架mybatis,恰好看到mybatis 複雜的工廠物件 sqlsessionfactory 的生成類 sqlsessionfactorybuilder 不禁想起gof 23種設計模式中的建造者模式。對照現實中,你去買車時只需知道你要買車的型別,便可到店中購得心滿意足的產品...