Builder Pattern(建造者模式)
2015-05-06 11:24
176 查看
/*Product.h*/ #ifndef PRODUCT_H #define PRODUCT_H class Product { public: Product(); ~Product(); protected: private: }; #endif
/*Product.cpp*/ #include "Product.h" Product::Product() { } Product::~Product() { }
/*Builder.h*/ #ifndef BUILDER_H #define BUILDER_H #include <string> class Builder { public: virtual ~Builder(); virtual void BuildPartA(const string &build_para)=0; virtual void BuildPartB(const string &build_para)=0; virtual void BuildPartC(const string &build_para)=0; virtual Product *GetProduct()=0; protected: Builder(); private: }; class ConcreteBuilder:public Builder { public: ConcreteBuilder(); ~ConcreteBuilder(); void BuilderPartA(const string &build_para); void BuilderPartB(const string &build_para); void BuilderPartC(const string &build_para); Product *GetProduct(); }; #endif
/*Builder.cpp*/ #include "Builder.h" #include "Product.h" #include <iostream> Builder::Builder() { } Builder::~Builder() { } ConcreteBuilder::ConcreteBuilder() { } ConcreteBuilder::~ConcreteBuilder() { } ConcreteBuilder::BuildPartA(const string &build_para) { std::cout<<build_para<<std::endl; } ConcreteBuilder::BuildPartB(const string &build_para) { std::cout<<build_para<<std::endl; } ConcreteBuilder::BuildPartC(const string &build_para) { std::cout<<build_para<<std::endl; } ConcreteBuilder *ConcreteBuilder::GetProduct() { BuildPartA("DefinedA"); BuildPartB("DefinedB"); BuildPartC("DefinedC"); return new Product(); }
/*Director.h*/ #ifndef DIRECTOR_H #define DIRECTOR_H class Builder class Director { public: Director(Builder *bld); ~Director(); void Construct(); protected: private: Builder *bld_; }; #endif
/*Director.cpp*/ #include "Diretor.h" #include "Builder.h" Director::Director(Builder *bld) { bld_=bld; } Director::~Director() { } void Director::Construct() { bld_->BuildPartA("Defined"); bld_->BuildPartB("Defined"); bld_->BuildPartC("Defined"); }
/*main.cpp*/ #include <iostream> #include "Product.h" #include "Builder.h" #include "Director.h" int main() { Director *d=new Director(new ConcreteBuilder()); d->Construct(); return 0; }
相关文章推荐
- 设计模式(5)——建造者模式(Builder Pattern)
- java设计模式——建造者模式(Builder Pattern)
- 设计模式----建造者模式(Builder Pattern)
- (第Ⅱ部分 创建型模式篇) 第3章 建造者模式(Builder Pattern)
- 我所理解的设计模式(C++实现)——建造者模式(Builder Pattern)
- 设计模式——创建型之使用建造者模式(Builder Pattern)灵活自由创建你的对象(一)
- 建造者模式(Builder Pattern)
- 建造者模式(builder pattern)
- C#设计模式之四建造者模式(Builder Pattern)【创建型】
- 设计模式---建造者模式(Builder Pattern)
- 设计模式系列之03-建造者模式(Builder Pattern)
- 设计模式----建造者模式(Builder Pattern)
- 第4章 建造者模式(Builder Pattern)
- C#设计模式(5)——建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- [置顶] 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 建造者模式(Builder Pattern)
- 设计模式---建造者模式(Builder Pattern)