📄 builder.h
字号:
/** * builder.h * Implemented by Blueprint Technologies, Inc. */#ifndef _builder_h#define _builder_h/** * Represents the complex object under construction. ConcreteBuilder * builds the product's internal representation and defines the * process by which it's assembled. */class Product{};class Part{};/** * Specifies an abstract interface for creating parts of * a Product object. */class Builder{protected: Part* partA; Part* partB; Part* partC; Product* product;public: Builder(): partA(0), partB(0), partC(0), product(0) { }; virtual ~Builder() { if( partA ) delete partA; if( partB ) delete partB; if( partC ) delete partC; if( product ) delete product; }; virtual void buildPartA() = 0; virtual void buildPartB() = 0; virtual void buildPartC() = 0;};/** * Constructs and assembles parts of the product by implementing * the Builder interface. Defines and keeps track of the * representation is creates. Provides an interface for retrieving * the product. */class ConcreteBuilder: public Builder{public: ConcreteBuilder(): Builder() { }; virtual void buildPartA() { partA = new Part(); }; virtual void buildPartB() { partB = new Part(); }; virtual void buildPartC() { partC = new Part(); }; Product* getResult() { /** * assemble the parts into a product. */ return new Product(); };};/** * Constructs an object using the Builder interface. */class Director{private: Builder* builder;public: Director( Builder* builder ) { this -> builder = builder; }; void construct() { builder -> buildPartA(); builder -> buildPartB(); builder -> buildPartC(); };};#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -