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 ...