1. 程式人生 > >設計模式學習--建造者模式

設計模式學習--建造者模式

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


  Builder是為建立一個Product物件的各個部件指定的抽象介面。

  ConcreteBuilder是具體建造者,實現Builder介面,構造和裝配各個部件。

  Product是產品角色

  Director是指揮者,是構建一個使用Builder介面的物件

建造者模式是在當建立複雜物件的演算法應該獨立於該物件的組成部分以及它們的裝配方式時適用的模式。

#include <iostream>

using namespace std;

class People									//抽象類  人類
{
public:
	virtual void CreateHead() = 0;				//純虛擬函式  建立頭
	virtual void CreateHand() = 0;				//純虛擬函式  建立手
	virtual void CreateBody() = 0;				//純虛擬函式  建立身體
	virtual void CreateFoot() = 0;				//純虛擬函式  建立腳
};

class Fatty : public People						//胖子類  繼承於人類
{
public:
	void CreateHead()							//實現純虛擬函式  建立頭
	{
		cout<<"胖子  頭"<<endl;
	}
	
	void CreateHand()							//實現純虛擬函式  建立手
	{
		cout<<"胖子  手"<<endl;
	}
	
	void CreateBody()							//實現純虛擬函式  建立身體
	{
		cout<<"胖子  身體"<<endl;
	}
	
	void CreateFoot()							//實現純虛擬函式  建立腳
	{
		cout<<"胖子  腳"<<endl;
	}
};

class ThinPeople : public People				//瘦子類  繼承於人類
{
public:
	void CreateHead()							//實現純虛擬函式  建立頭
	{
		cout<<"瘦子  頭"<<endl;
	}
	
	void CreateHand()							//實現純虛擬函式  建立手
	{
		cout<<"瘦子  手"<<endl;
	}
	
	void CreateBody()							//實現純虛擬函式  建立身體
	{
		cout<<"瘦子 身體"<<endl;
	}
	
	void CreateFoot()							//實現純虛擬函式  建立腳
	{
		cout<<"瘦子  腳"<<endl;
	}
};

class Direct									//指揮者類
{
	People* peo;								//抽象型別指標
public:
	Direct(People* temp):peo(temp){};			//建構函式  傳入胖子類指標或者瘦子類指標 並轉化為人類指標
	
	void create()								//建立胖子或瘦子
	{
		peo->CreateHead();
		peo->CreateHand();
		peo->CreateBody();
		peo->CreateFoot();
	}
};

int main()
{
	Fatty* fat = new Fatty;						//胖子類例項
	Direct* dir = new Direct(fat);				//指揮者類例項
	dir->create();								//開始建立
	
	cout<<endl;
	ThinPeople* thin = new ThinPeople;			//瘦子類例項
	Direct* dir0 = new Direct(thin);			//指揮者類例項
	dir0->create();								//開始建立
	
	return 0;
}


相關推薦

Java設計模式學習-建造模式

建造者模式的本質 分離了物件子元件的單獨構造(由Builder來負責)和裝配(由Director負責)。從而可以構造出複雜的物件。這個模式適用於 : 某個物件的構建過程複雜的情況下使用 。 由於實現了構建和裝配的解耦 。不同的構建器 , 相同的裝配 , 也可以做出不同的物件 。相

設計模式學習--建造模式

  建造者模式,將一個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。   Builder是為建立一個Product物件的各個部件指定的抽象介面。   ConcreteBuil

設計模式學習總結(2)單例模式建造模式、原型模式

單例模式(Singleton Pattern) 這種模式涉及到一個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。這個類提供了一種訪問其唯一的物件的方式,可以直接訪問,不需要例項化該類的物件。 單例模式有以下三點注意: 1、單例類只能有一個例項。 2、單

設計模式之禪》學習小節之模板方法模式建造模式和代理模式

一。模板方法模式 其通用類圖如下: 模板方法可以用來定義一個演算法框架;通過將演算法對基本方法的排程封裝在抽象類的公開方法中(模板方法),同時把基本方法交給子類實現;實現了封裝不變部分,擴充套件可變部分的目的。另外,應儘量將基本方法的訪問許可權宣告為保護。 二。建造者

設計模式建造模式(Builder)

人的 做出 字體 存在 分享 定義 固定 也不會 抽象方法 一個人活到70歲以上,都會經歷這樣的幾個階段:嬰兒,少年,青年,中年,老年。並且每個人在各個階段肯定是不一樣的呀,我覺得可以說世界上不存在兩個人在人生的這5個階段的生活完全一樣,但是活到70歲以上的人,都經歷了這幾

設計模式建造模式

object lan pat alt pri 創建對象 private 關心 turn 1、定義 1.1 標準定義 建造者模式( Builder Pattern) 也叫做生成器模式, 其定義如下: Separate the construction of a complex

【Unity3D與23種設計模式建造模式(Builder)

產出 private 一個 gof 行為 並且 bstr reac 定義 GoF中定義: “將一個復雜的構建流程與它的對象表現分離出來,讓相同的構建流程可以產生不同的對象行為表現。” 建造者模式可以分為兩個步驟來實施: 1.將復雜的構建流程獨立出來,並將整個流程分成

設計模式建造模式 Builder

cli return over orb stat implement b- none rect 本質與使用場景 public interface AirShipBuilder { Engine builderEngine(); OrbitalM

《大話設計模式》——建造模式

多個 構圖 str 業務邏輯 clas 邏輯 add [] -1 建造者模式結構圖 角色:1、builder:建造者接口。定義了建造一個產品所必須的所有流程。所有的建造者都需要實現該類,以確保實現建造一個產品所需的流程。 2、concreteBuilder:具體建造者。每

php設計模式三-----建造模式

軟件 nds 意圖 .html 系統 pattern cti ons 解決 1.簡介 意圖:將一個復雜的構建與其表示相分離,使得同樣的構建過程可以創建不同的表示。 主要解決:主要解決在軟件系統中,有時候面臨著"一個復雜對象"的創建工作,其通常由各個部分的子對象用一定的算法構

GOF23設計模式建造模式(builder)

gin 實例 情況 gof ace state 實現 oid sql 一、建造者模式概述   建造者模式的本質:     1.分離了對象子組件的單獨構造(由Builder負責)和裝配(由Director負責)。從而可以構造出復雜的對象。這個模式適用於:某個對象的過程復雜的情

設計模式建造模式

通過 font 必須 ron 價值 屬性。 color word 內部 當一個類的內部數據過於復雜的時候(通常是負責持有數據的類,比如Config、VO、PO、Entity...),要創建的話可能就需要了解這個類的內部結構,還有這些東西是怎麽組織裝配等一大坨亂七八糟的東西,

設計模式- 創建型模式建造模式(2)

wait 設計模式 部件 add put AD progress port http java23種設計模式之一,英文叫Builder Pattern。其核心思想是將一個“復雜對象的構建算法”與它的“部件及組裝方式”分離,使得

設計模式建造模式(創建型)

修改 發現 text href cto stat mar public geek 模式定義 建造者模式屬於23種設計模式中的創建型模式,可以理解為創建對象的一種很好的方法。 所謂建造者模式就是將組件和組件的組件過程分開,然後一步一步建造一個復雜的對象。所以建造者模式又叫生成

(轉自精通Python設計模式)Python設計模式之創建型模式——2.建造模式

生成 需要 結構 progress per 展示 有意 odi con   建造者模式將一個復雜對象的構造過程與其表現分離,這樣,同一個構造過程可用於創建多個不同的表現。   我們來看個實際的例子,假設我們想要創建一個HMTL頁面生成器,HTML頁面的基本結構(構造組件)

初識設計模式建造模式

auth div bsp ddp des print 生成 pub 定義 前言:繼續學習設計模式,今天學習建造者模式。 建造者模式(Builder Pattern) 定義   又叫生成器模式。將一個復雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 設

C#設計模式(5)——建造模式(Builder Pattern)

stringbu .... rtm summary 作用 生活 size 買電腦 如果 一、引言   在軟件系統中,有時需要創建一個復雜對象,並且這個復雜對象由其各部分子對象通過一定的步驟組合而成。例如一個采購系統中,如果需要采購員去采購一批電腦時,在這個實際需求中,電腦就

設計模式的藝術 建立型模式建造模式

不懂使用為學過,說出用途,繪製結構為了解,不會靈活使用基本等於沒學。 前言 沒有人想買汽車的時候只會單獨買一個輪胎或者一個方向盤,大家買的都是組裝好的一輛完整的汽車,如何將這些部件組裝成一個完整的汽車並返回給客戶,這就是建造者模式需要解決的問題。建造者模式又被稱之為生成器模式,它是一種較為複

java設計模式3.建造模式、原型模式

原型模式 情況 nbsp 寫到 指向 應用程序 模式 接口 抽象 建造者模式 一個產品常有不同的組成部分作為產品的零件,有些情況下,一個對象會有一些重要的性質,在它們沒有恰當的值之前,對象不能作為一個完整的產品使用,有些時候,一個對象的一些性質必須按照某個順序賦值才有意

設計模式之----建造模式

建造者模式 抽象建造者(Builder)角色:給 出一個抽象介面,以規範產品物件的各個組成成分的建造。一般而言,此介面獨立於應用程式的商業邏輯。模式中直接建立產品物件的是具體建造者 (ConcreteBuilder)角色。具體建造者類必須實現這個介面所要求的兩種方法:一種是建造方法(bu