8 建造者模式

2021-07-03 05:32:52 字數 1881 閱讀 6548

1.說明

請參閱本系列第一章節

2.建造者模式說明

構造者模式:將乙個複雜的構建與它的表示分離,使得同樣的構建過程,可以建立不同的表示。即生成具有不同內部表象的產品物件。在使用的時候,使用者只需要知道構建的物件就行了,而不需要知道構建的細節。客戶端通過呼叫指揮者的介面,來控制構建過程,使得能夠隔離使用者的構建過程

注意事項:指揮者的構建過程必須足夠普遍,以此來構建不同的具體的物件。如果這些構建的物件的有相同的屬性或行為,也可以在指揮者中構建公共的方法

好處:建造的**與表示**分離,耦合度更低,構建者隱藏了產品的組裝,使得表示**更關注實現,如需修改,只需要修改實現細節,不用修改建立流程

感覺和工廠模式,模板方法模式都比較類似:都是需要注意的是:

工廠是生產不同物件,而建造者模式是構建具有不同內部表示的物件,注重細節

如果僅僅是構建物件內部的部分引數不同,可以通過傳入引數的方式來構建,而不是用派生的方式來新增

**背景:不同品牌的電腦,組裝流程是一樣的,**簡單較少了電腦的組裝過程

//建造者模式基類:buildcombase.h

#ifndef __buildcombase_h

#define __buildcombase_h

#include

class cbuildcombase

};#endif

//thinkpad 建立流程 thinkpad.h

#ifndef __thinkpad_h

#define __thinkpad_h

#include "buildcombase.h"

class cthinkpad:public cbuildcombase

virtual

void create_mem()

virtual

void create_mainboard()

virtual

void create_harddisk()

};#endif

//mac: mac.h

#ifndef __mac_h

#define __mac_h

#include "buildcombase.h"

class cmac:public cbuildcombase

virtual

void create_mem()

virtual

void create_mainboard()

virtual

void create_harddisk()

};#endif

//指揮者dector.h

#ifndef __dector_h

#define __dector_h

#include "buildcombase.h"

class cdector

private:

void create_buil(cbuildcombase* build)

};#endif

//client:客戶端通過指揮者即可建立,而不用關注內部的建立細節

#include

#include "dector.h"

#include "mac.h"

#include "thinkpad.h"

#include "buildcombase.h"

int main(void)

建造者模式

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

建造者模式

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

建造者模式

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