设计模式之建造者模式
建造者模式解决的问题:
当创建的对象很复杂(通常是由其它对象组合而成)时,我们将创建的过程分离开,一步一步进行对象的创建,在每一步中可以引入参数,使得可以经过相同的步骤得到不同的对象。
结构图如下:
具体代码如下:
//Product.h
#ifndef PRODUCT_H_
#define PRODUCT_H_
#include <iostream>
using namespace std;
class Product {
public:
Product() {
ProducePart();
cout << "return a product" << endl;
}
~Product() {}
void ProducePart() {
cout << "build part of product" << endl;
}
};
class ProductPart {
public:
ProductPart()
~ProductPart()
ProductPart* BuildPart() {
return new ProductPart();
}
}
#endif //PRODUCT_H_
//Build.h
#ifndef BUILDER_H_
#define BUILDER_H_
#include <string>
#include "Product.h"
using namespace std;
class Builder {
public:
virtual ~Builder() {}
virtual void BuildPartA(const string &buildPara) = 0;
virtual void BuildPartB(const string &buildPara) = 0;
virtual void BuildPartC(const string &buildPara) = 0;
virtual Product* GetProduct() = 0;
protected:
Builder() {}
};
class ConcreteBuilder : public Builder {
public:
ConcreteBuilder() {}
virtual ~ConcreteBuilder() {}
virtual void BuildPartA(const string &buildPara) {
}
virtual void BuildPartB(const string &buildPara) = 0;
virtual void BuildPartC(const string &buildPara) = 0;
virtual Product* GetProduct() = 0;
}
#endif BUILDER_H_