設計模式(十)建造者模式 Builder

2021-07-09 02:17:05 字數 2594 閱讀 7008

1.介紹/作用:

將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。

建造者模式最主要功能是基本方法的呼叫順序安排,也就是這些基本方法已經實現了。

2.應用場景:

一是產品類非常的複雜,或者產品類中的呼叫順序不同產生了不同的效能,這個時候使用建造者模式是非常合適。

舉乙個形象的例子:

去某餐館就餐,點**,每個**都包含1個葷菜,1個素材,1碗湯,但是每種**具體的菜卻不同,所以餐廳更具**不同,就分為a,b,c...類,你點餐是只需要點a**,就能夠獲得相應的菜品了。建造者模式就能夠做此類事情,根據產品的不同組合及順序安排來提供介面。

3.uml類圖

4.實現**

builder.h

#ifndef _builder_h_

#define _builder_h_

#include using namespace std;

class builder

; virtual ~builder(){};

virtual void buildparta(string) = 0;

virtual void buildpartb(string) = 0;

virtual void buildpartc(string) = 0;

private:

};class concretebuildera :public builder

; virtual ~concretebuildera(){};

virtual void buildparta(string str);

virtual void buildpartb(string str);

virtual void buildpartc(string str);

private:

};class concretebuilderb :public builder

; virtual ~concretebuilderb(){};

virtual void buildparta(string str);

virtual void buildpartb(string str);

virtual void buildpartc(string str);

private:

};#endif

builder.cpp

#include "stdafx.h"

#include "builder.h"

#include using namespace std;

void concretebuildera::buildparta(string str)

void concretebuildera::buildpartb(string str)

void concretebuildera::buildpartc(string str)

void concretebuilderb::buildparta(string str)

void concretebuilderb::buildpartb(string str)

void concretebuilderb::buildpartc(string str)

director.h

#ifndef _builderdirector_h_

#define _builderdirector_h_

#include using namespace std;

#include "builder.h"

class direcotr

; ~direcotr(){};

void constructa()

void constructb()

private:

builder* m_pbuilder;

};#endif

client**:

concretebuildera* pconcretebuildera = new concretebuildera();

direcotr* pdirecotr = new direcotr(pconcretebuildera);

pdirecotr->constructa();

if (pconcretebuildera)

if (pdirecotr)

輸出:

concretebuildera buildparta

concretebuildera buildpartb

concretebuildera buildpartc

請按任意鍵繼續. . .

5.擴充套件/補充

建造者模式和工廠模式:

這兩個模式非常相似呀,但是記住一點。建造者模式最主要功能是基本方法的呼叫順序安排,也就是這些基本方法已經實現了;而工廠方法則重點是建立,你要什麼物件我創造乙個物件出來,組裝順序則不是他關心的。

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

這是個人學習程式設計模式的系列學習筆記第十篇。採用qt creator進行編寫,但盡量採用c 基礎語法。建造者模式 builder pattern 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。個人理解,建造者模式的思路同前面學習的模板方法模式 template meth...

大話設計模式學習(十) 建造者模式

建造者模式 將乙個複雜物件的構造與它的表示分離,使得同樣的構建過程可以建立不同的表示。建造者模式主要用於建立一些複雜的物件,這些物件內部構建之間的建造順序通常是穩定的,但物件內部的建構通常面臨著複雜的物件,它的好處在於使得建造 和表示 分離,由於建造者隱藏了該產品是如何組裝的,所以若需要改變乙個產品...

大話設計模式筆記(十) 建造者模式

畫乙個小人,有頭 身體 兩手 兩腳就可以了。人類 created by callmedevil on 2019 7 21.public class person public void drawbody public void drawhand public void drawleg public ...