工作室 网站 备案,无锡做网站seo,福州建设工程造价信息网,品牌网站建设怎么收费以下是一个完整的C建造者模式示例#xff0c;包含产品类、建造者接口、具体建造者、指挥者以及测试代码#xff1a;
#include iostream
#include string
#include memory// 产品类#xff1a;汽车
class Car {
public:void setBody(const std::str…以下是一个完整的C建造者模式示例包含产品类、建造者接口、具体建造者、指挥者以及测试代码
#include iostream
#include string
#include memory// 产品类汽车
class Car {
public:void setBody(const std::string body) { m_body body; }void setEngine(const std::string engine) { m_engine engine; }void setWheels(int wheels) { m_wheels wheels; }void setElectronics(const std::string electronics) { m_electronics electronics; }void show() const {std::cout Car Details:\n Body: m_body \n Engine: m_engine \n Wheels: m_wheels \n Electronics: m_electronics \n\n;}private:std::string m_body;std::string m_engine;int m_wheels 0;std::string m_electronics;
};// 抽象建造者
class CarBuilder {
public:virtual ~CarBuilder() default;virtual void buildBody() 0;virtual void buildEngine() 0;virtual void buildWheels() 0;virtual void buildElectronics() 0;virtual Car getResult() 0;
};// 具体建造者运动型汽车
class SportsCarBuilder : public CarBuilder {
public:void buildBody() override { m_car.setBody(Carbon Fiber Body); }void buildEngine() override { m_car.setEngine(V8 Twin Turbo); }void buildWheels() override { m_car.setWheels(4); }void buildElectronics() override { m_car.setElectronics(Racing Package); }Car getResult() override { return std::move(m_car); }private:Car m_car;
};// 具体建造者家用汽车
class FamilyCarBuilder : public CarBuilder {
public:void buildBody() override { m_car.setBody(Steel Body); }void buildEngine() override { m_car.setEngine(1.6L Inline-4); }void buildWheels() override { m_car.setWheels(4); }void buildElectronics() override { m_car.setElectronics(Basic Package); }Car getResult() override { return std::move(m_car); }private:Car m_car;
};// 指挥者
class Director {
public:void setBuilder(CarBuilder* builder) { m_builder builder; }void constructCar() {m_builder-buildBody();m_builder-buildEngine();m_builder-buildWheels();m_builder-buildElectronics();}private:CarBuilder* m_builder;
};// 测试代码
int main() {Director director;// 建造运动型汽车SportsCarBuilder sportsBuilder;director.setBuilder(sportsBuilder);director.constructCar();Car sportsCar sportsBuilder.getResult();sportsCar.show();// 建造家用汽车FamilyCarBuilder familyBuilder;director.setBuilder(familyBuilder);director.constructCar();Car familyCar familyBuilder.getResult();familyCar.show();return 0;
}输出结果
Car Details:
Body: Carbon Fiber Body
Engine: V8 Twin Turbo
Wheels: 4
Electronics: Racing PackageCar Details:
Body: Steel Body
Engine: 1.6L Inline-4
Wheels: 4
Electronics: Basic Package代码结构说明 Car类最终要构建的复杂对象包含车身、发动机、轮子等组件 CarBuilder抽象类 定义构建汽车各个组件的接口包含4个纯虚函数用于构建不同部件提供获取最终产品的接口 具体建造者 SportsCarBuilder实现运动型汽车的建造细节FamilyCarBuilder实现家用汽车的建造细节每个具体建造者维护自己的Car实例 Director类 控制建造流程定义建造顺序先车身→发动机→轮子→电子设备通过组合不同的建造者来创建不同产品 测试代码 演示如何使用建造者模式创建不同类型的产品通过切换建造者来改变最终产品保持创建过程的一致性