版权声明:本文为博主原创文章,未经同意不允许转载! https://blog.csdn.net/wb175208/article/details/84349441
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的创建过程可以创建不同的表示。
场景:
1.当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2.当构造过程必须允许被创建的对象有不同的表示时。
#include <stdio.h>
#include <string>
#include <vector>
class CarBuilder {
public:
virtual void builderColor() {
}
virtual void builderCarBody() {
}
virtual void builderWheel() {
}
virtual void buildCarLabel() {
}
};
class BMWBuilder : public CarBuilder {
public:
virtual void builderColor()override {
printf("创建宝马车颜色:红色\n");
}
virtual void builderCarBody()override {
printf("创建宝马车车体\n");
}
virtual void builderWheel() override {
printf("创建宝马车轮子\n");
}
virtual void buildCarLabel()override {
printf("创建宝马车车标\n");
}
};
class DasBuilder : public CarBuilder {
public:
virtual void builderColor()override {
printf("创建大众车颜色:黑色\n");
}
virtual void builderCarBody()override {
printf("创建大众车车体\n");
}
virtual void builderWheel() override {
printf("创建大众车轮子\n");
}
virtual void buildCarLabel()override {
printf("创建大众车车标\n");
}
};
class CarFactory {
public:
void buildCar(CarBuilder* builder) {
builder->builderCarBody();
builder->builderColor();
builder->builderWheel();
builder->buildCarLabel();
}
};
int main() {
BMWBuilder* bmwBuilder = new BMWBuilder;
DasBuilder* dasBuilder = new DasBuilder;
CarFactory* carFactory = new CarFactory;
carFactory->buildCar(bmwBuilder);
carFactory->buildCar(dasBuilder);
return 0;
}
运行结果: