创建型设计模式---构建模式(Builder)
来源:互联网 发布:景观设计效果图软件 编辑:程序博客网 时间:2024/04/18 02:25
builder模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
适用场景:
(1)当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时
(2)当构造过程必须允许被构造的对象有不同的表示时
#include <iostream>
#include <string>
#include <map>
using namespace std;
class Vehicle
{
public:
Vehicle(const string &type) : type_(type)
{
}
void setPart(const string &partKey, const string &partValue)
{
parts_[partKey] = partValue;
}
void const show()
{
cout << "Type: " << type_ << endl;
cout << "Engine: " << parts_["engine"] << endl;
cout << "Wheels: " << parts_["wheels"] << endl;
}
private:
Vehicle();
private:
string type_;
map<string, string> parts_;
};
class VehicleBuilder
{
public:
VehicleBuilder()
{
vehicle_ = NULL;
}
virtual ~VehicleBuilder()
{
if (NULL != vehicle_)
{
delete vehicle_;
vehicle_ = NULL;
}
}
Vehicle *getVehicle()
{
return vehicle_;
}
virtual void buildEngine() = 0;
virtual void buildWheels() = 0;
protected:
Vehicle *vehicle_;
};
class BMW : public VehicleBuilder
{
public:
BMW()
{
vehicle_ = new Vehicle("BMW");
}
void buildEngine()
{
vehicle_->setPart("engine", "BMW Engine");
}
void buildWheels()
{
vehicle_->setPart("wheels", "BMW Wheels");
}
};
class Audi : public VehicleBuilder
{
public:
Audi()
{
vehicle_ = new Vehicle("Audi");
}
void buildEngine()
{
vehicle_->setPart("engine", "Audi Engine");
}
void buildWheels()
{
vehicle_->setPart("wheels", "Audi Wheels");
}
};
class Director
{
public:
void construct(VehicleBuilder *builder)
{
builder->buildEngine();
builder->buildWheels();
}
};
int main()
{
VehicleBuilder *builder = NULL;
Director director;
builder = new BMW();
director.construct(builder);
builder->getVehicle()->show();
delete builder;
builder = new Audi();
director.construct(builder);
builder->getVehicle()->show();
delete builder;
builder = NULL;
return 0;
}
output:
Type: BMW
Engine: BMW Engine
Wheels: BMW Wheels
Type: Audi
Engine: Audi Engine
Wheels: Audi Wheels
- 创建型设计模式---构建模式(Builder)
- 设计模式-创建型:Builder
- 创建型设计模式之Builder模式
- 设计模式之构建Builder
- 设计模式入门学习 构建Builder模式
- 设计模式:构建器模式(Builder)
- 设计模式之构建者Builder模式
- 设计模式之Builder构建者模式
- (C++设计模式) ------建造者模式Builder -- 创建型模式
- 设计模式(5)-对象创建型模式-Builder模式
- 设计模式(5)-对象创建型模式-Builder模式
- 设计模式:创建型模式:建造模式(Builder Pattern)
- 设计模式-创建型模式#建造者模式Builder
- [创建型设计模式:Builder]代码实现
- [设计模式-创建型]建造者(Builder)
- 设计模式-创建型-builder生成器
- 创建型--builder模式
- 创建模式(Builder Pattern、构建模式、生成器,对象创建型模式)
- oracle 跟踪PMON动态注册
- java编程思想(第四版)第二章练习题-2
- 代码优化
- POJ 1273 Drainage Ditches (dinic模板)
- DNS服务器和DNS从属关系部署
- 创建型设计模式---构建模式(Builder)
- Javascript中的类实现
- 使用arm-eabi-addr2line, ndk-stack工具跟踪Android调用堆栈
- 字符编码笔记:ASCII,Unicode和UTF-8
- Cocos2d-x学习笔记(九)纹理CCTexture2D和精灵CCSprite
- 软阵列和LVM实现
- oracle 释放无用连接
- 使用FlasCC处理位图数据
- iframe中动态添加html内容