1、產品類product定義
#ifndef product_h
#define product_h
#define str_color " color: "
#define str_space " space: "
#define str_other " other: "
class product
;#endif
2、產品類product實現
#include
#include
#include "product.h"
product::product()
void product::buildcolor(char* col)
this->color = col;
}void product::buildspace(int space)
this->space = space;
}void product::buildother(char* other)
char* product::tostring()
int len = strlen(str_color) + strlen(color);
len += strlen(str_space) + strlen(strspace);
len += strlen(str_other) + strlen(other);
res = new char[len + 2];
switch(first)
return res;
}3、構造產品抽象類builder定義
#ifndef builder_h
#define builder_h
#include "product.h"
class builder
;#endif
4、構造產品具體類concretebuilder0定義
#ifndef concretebuilder0_h
#define concretebuilder0_h
#include "builder.h"
class concretebuilder0 : public builder
;#endif
5、構造產品具體類concretebuilder0實現
#include
#include
#include "concretebuilder0.h"
concretebuilder0::concretebuilder0()
concretebuilder0::~concretebuilder0()
}void concretebuilder0::createparta(char* col, int spac)
p->buildcolor(col);
p->buildspace(spac);
}void concretebuilder0::createpartb(char* col, int spac)
char stmp[3];
sprintf(stmp,"%d",spac);
int len = strlen(col) + strlen(" ") + strlen(stmp);
char* tmp = new char[len];
strcpy(tmp, col);
strcat(tmp," ");
strcat(tmp, stmp);
p->buildother(tmp);
}product* concretebuilder0::getproduct()
6、構造產品具體類concretebuilder1定義
#ifndef concretebuilder1_h
#define concretebuilder1_h
#include "builder.h"
class concretebuilder1 : public builder
;#endif
7、構造產品具體類concretebuilder1實現
#include
#include
#include "concretebuilder1.h"
concretebuilder1::concretebuilder1()
concretebuilder1::~concretebuilder1()
}void concretebuilder1::createparta(char* col, int spac)
p->buildspace(spac);
p->buildcolor(col);
}void concretebuilder1::createpartb(char* col, int spac)
char stmp[3];
sprintf(stmp,"%d",spac);
int len = strlen(col) + strlen(" ") + strlen(stmp);
char* tmp = new char[len];
strcpy(tmp, stmp);
strcat(tmp," ");
strcat(tmp, col);
p->buildother(tmp);
}product* concretebuilder1::getproduct()
8、定義構造產品類的director類定義
#ifndef director_h
#define director_h
#include "builder.h"
class director
;#endif
9、定義構造產品類的director類實現
#include
#include "director.h"
void director::createproduct(builder* b)
b->createparta("red",5);
b->createpartb("blue",12);
}10、客戶使用類client實現
#include
#include "product.h"
#include "concretebuilder0.h"
#include "builder.h"
#include "director.h"
#include "concretebuilder1.h"
int main()
c 設計模式 Builder
動機 在軟體系統中,有時候面臨著 乙個複雜物件 的建立工作,其通常由各個部分的子物件用一定的演算法構成 由於需求的變化,這個複雜物件的各個部分經常面臨著劇烈的變化,但是將它們組合在一起的演算法卻相對穩定。如何應對這種變化?如何提供一種 封裝機制 來隔離出 複雜物件的各個部分 的變化,從而保持系統中的...
C 模式設計之Builder
c 模式設計之builder 2002 07 30 com集中營 一 功能 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。二 結構圖 各類之間的互動關係如下圖所示 三 示例 namespace designpattern builder class product2 cl...
Builder設計模式
builder設計模式一般會採用鏈式程式設計結構 案例分析?構建一台電腦 記憶體 cpu 顯示卡等等 記憶體 r am 執行記憶體 和 rom 非執行記憶體 分為了一些角色 builder 抽象類 規範產品組裝 案例中builder介面 concratebuilder 具體組裝產品類 案例macbo...