建造者模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。和工厂模式相比,就是我连生产线都提供给你了,还明确了生产的工序。
一个是以工厂为中心,一个是以产品为中心。
下图是简单的描述图
#ifndef PRODUCT_H
#define PRODUCT_H
#include "builder.h"
class Product
{
public:
Product(Builder *p_b);
~Product(){delete p;}
void Constructor();
private:
Builder *p;
};
#endif // PRODUCT_H
#include "product.h"
Product::Product(Builder *p_b)
{
p = p_b;
}
void Product::Constructor()
{
p->builder_a();
p->builder_b();
}
#include <iostream>
using namespace std;
#include "fristbuilder.h"
#include "product.h"
int main()
{
Product p(new FristBuilder);
p.Constructor();
return 0;
}