您的位置:首页 > 产品设计 > UI/UE

设计模式之Builder模式

2013-03-20 11:08 127 查看
Builder模式的关键是其中的Director对象并不直接返回对象,而是通过一步步来一步步进行对象的创建。当然这里Director可以提供一个默认的返回对象的接口(即返回通用的复杂对象的创建,即不指定或者特定唯一指定BuilderProduct*中的参数)。
Product.h
#ifndef_PRODUCT_H_
#define_PRODUCT_H_
classCProduct
{
public:
CProduct();
~CProduct();
};
#endif
Produce.cpp
#include"Product.h"
CProduct::CProduct()
{

}

CProduct::~CProduct()
{

}
Builder.h
#ifndef__BUILDER_H_
#define__BUILDER_H_
#include"Product.h"
#include<string>
#include<iostream>
usingnamespacestd;
classCBuilder//AsaInterface
{
public:
CBuilder();
~CBuilder();
virtualvoidBuilderProductA(conststringA)=0;
virtualvoidBuilderProductB(conststringB)=0;
virtualvoidBuilderProductC(conststringC)=0;
virtualCProduct*GetProduct()=0;
};
#endif
Builder.cpp
#include"Builder.h"
CBuilder::CBuilder()
{

}

CBuilder::~CBuilder()
{

}





ConcreterBuilder.h
#ifndef__CONCERTERBUILDER_H_
#define__CONCERTERBUILDER_H_
#include"Product.h"
#include"Builder.h"
classCConcerterBuilder:publicCBuilder
{
public:
CConcerterBuilder();
~CConcerterBuilder();
voidBuilderProductA(conststringA);
voidBuilderProductB(conststringB);
voidBuilderProductC(conststringC);
CProduct*GetProduct();

};
#endif





ConcreterBuilder.cpp
#include"ConcreterBuilder.h"
CConcerterBuilder::CConcerterBuilder()
{

}

CConcerterBuilder::~CConcerterBuilder()
{

}

voidCConcerterBuilder::BuilderProductA(conststringA)
{
cout<<A<<endl;

}
voidCConcerterBuilder::BuilderProductB(conststringB)
{
cout<<B<<endl;

}
voidCConcerterBuilder::BuilderProductC(conststringC)
{
cout<<C<<endl;
}

CProduct*CConcerterBuilder::GetProduct()
{
returnnewCProduct;
}
Main.cpp
#include<iostream>
#include"Director.h"
#include"ConcreterBuilder.h"
usingnamespacestd;
intmain()
{
CDirector*pDir=newCDirector(newCConcerterBuilder());
pDir->Construct();
deletepDir;
return0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: