设计模式2-Builder模式
来源:互联网 发布:数控锥度螺纹编程实例 编辑:程序博客网 时间:2024/06/05 19:08
/**********************************************************************************************************************/
* Builder模式:
* 我们可以将Builder理解成电饭锅,给这个Builder放进去米和水,经过Builder的Build后,我们就可以取出香喷喷的米饭了。
* 意图: 将一个复杂对象的构建与它的表示 分离,使得同样的构建过程可以创建不同的表示。
* 适用性: 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
* 当构造过程必须允许被构造的对象有不同的表示时。
/**********************************************************************************************************************/
#include <stdio.h>
#include <string>
// 汽车类,要制作一部车,工程大吧?所以使用BUILDER模式将对象的建造分开。
class CCar
{
public:
void What()
{
printf("%s", szWhat);
}
void Drive()
{
printf("开车咯!\n");
}
char szWhat[100];
};
// 车的Builder
class CCarBuilder
{
public:
virtual void BuildCar() = 0;
virtual CCar* GetResult() = 0;
//protected:
// CCarBuilder();
};
class CBenchBuilder : public CCarBuilder
{
public:
CBenchBuilder()
{
_car = NULL;
}
virtual void BuildCar()
{
if(_car == NULL)
_car = new CCar;
strcpy(_car->szWhat, "我是奔驰车!");
};
virtual CCar* GetResult()
{return _car;}
private:
CCar *_car;
};
/**********************************************************************************************************************\
* 我想开不同的车,只要传个不同的建造者进去就行了。
\**********************************************************************************************************************/
void Drive(CCarBuilder &builder)
{
CCar *car;
builder.BuildCar();
car = builder.GetResult();
car->What();
car->Drive();
}
void main()
{
CBenchBuilder builder;
Drive(builder);
}
- 设计模式2-Builder模式
- 设计模式(2) Builder模式
- 设计模式:Builder模式
- 设计模式 -- BUILDER模式
- 【设计模式】Builder模式
- 设计模式-Builder模式
- 设计模式Builder模式
- 设计模式-Builder模式
- 设计模式 - Builder模式
- 设计模式 - Builder模式
- 设计模式---Builder模式
- 设计模式--Builder模式
- 设计模式---Builder模式
- 设计模式--Builder模式
- 设计模式---Builder模式
- 设计模式---Builder模式
- 设计模式-builder模式
- 【设计模式】Builder模式
- 【理想流】不要做虚情假意的管理
- 把李咏笑趴下的经典瞬间
- 对骨骼动画的一点理解
- TangentSpaceVectors的创建
- QT编程技巧.QString和QDateTime之间的相互转换
- 设计模式2-Builder模式
- JavaWeb工程下,基于代理模式的两种层次结构比较分析
- MySQL数据库中CHAR与VARCHAR之争
- 心理学上说:拖延——是最厉害的拒绝
- python 排序
- 文本框中的输入法控制
- 数据结构(C#版)概念整理
- php下载文件的函数
- 二维码识别/生成工具 c#实现