一.意图

    将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同的表示。

二.动机

    一个复杂的对象的构造过程中,原料相同,可能会要求生产不同的产品,并且生产的产品种类还能够方便的增加。Bulider模式期望将解析原材料的过程与利用原材料生产产品的过程分离开,以达到用户不需要知道根据原材料构建产品的详细过程,并可以方便的增加新的产品。

三.适用性

  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。

四.类图

    Builder(生成器)-对象创建型模式

如以上类图所示,Director只负责组建整个流程,并不关心组建的具体过程,组建的细节由每一个Bulider负责。

五.实例代码

    

#include "Builder.h"
#include "Product.h"
#include <iostream>
#include <cstdlib>
#include <cstdio>

class Director
{
public:
    Builder* m_builder;
    Product * m_product;
    Director(Builder*builder) : m_builder(builder)
    {

    }
    void ParseElement(int element)
    {
        switch (element)
        {
            case 1:
                m_builder->BuildHouse();
                break;
            case 2:
                m_builder->BuildHouse();
                break;
            case 3:
                m_builder->BuildHouse();
        }
    }

    Product * GetProduct()
    {
         m_product = m_builder->GetProduct();
         return m_product;
    }
};
Director.h

相关文章: