C++设计模式浅识建造者模式
2016-06-25 10:56
399 查看
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
模式实现:
客户端:
模式实现:
class Builder; //产品 class Product{ public: void AddPart(const char *info){ m_PartInfoVec.push_back(info); } void ShowProduct(){ for(std::vector<const char *>::iterator item = m_PartInfoVec.begin(); item != m_PartInfoVec.end(); ++item){ std::cout << *item << std::endl; } } private: std::vector<const char *> m_PartInfoVec; }; //Builder建造者,统一抽象接口 class Builder{ public: virtual void BuildPartA(){} virtual void BuildPartB(){} virtual Product* GetProduct() { return NULL;} }; //具体的被创建对象方法 class ConcreteBuilder:public Builder{ public: ConcreteBuilder(){ m_Product = new Product(); } void BuildPartA(){ m_Product->AddPart("PartA completed"); } void BuildPartB(){ m_Product->AddPart("PartB q"); } Product* GetProduct(){ return m_Product; } private: Product *m_Product; }; //Director控制具体建造对象的创建 class Director{ public: Director(Builder *builder) { m_Builder = builder; } void CreateProduct(){ m_Builder->BuildPartA(); m_Builder->BuildPartB(); } private: Builder *m_Builder; };
客户端:
int main(){ Builder *builderObj = new ConcreteBuilder(); Director directorObj(builderObj); directorObj.CreateProduct(); Product *productObj = builderObj->GetProduct(); if(productObj == NULL) { return 0; } productObj->ShowProduct(); delete productObj; productObj = NULL; delete builderObj; builderObj = NULL; }
相关文章推荐
- C++设计模式浅识中介者模式
- 使用C语言打印不同星号图案(矩形 平行四边形 三角形)
- C语言数据类型与输出格式
- 详解c++指针的指针和指针的引用
- 学习笔记:第11章 C/C++程序设计
- 深入了解C++中map用法
- C++设计模式浅识职责链模式
- c++中位运算
- C++设计模式浅识命令模式
- 字符串转数组 C++
- 《C++ Primer Plus》学习笔记 2.1.3 C++预处理器和iostream文件
- vim C++配置
- C++可变参数的另一种实现
- 仅返回类型不同的函数,在C++中如何实现重载?
- 降低程序耦合性的方法
- C++中的友元(一)
- 单调栈:平面上N个底部对齐紧靠在一起的矩形,宽高是任意整数,求其最大内切矩形的面积
- C++ 实验五
- C++ 实验四
- C++ 实验三