美文网首页
建造者模式

建造者模式

作者: 星月西 | 来源:发表于2017-05-15 22:58 被阅读13次

1.简介

建造者模式主要是用于创建一些复杂的对象,这些对象内部构建简的建造顺序通常是稳定的,但对象内部的构建通常面临着复杂的变化。
用途:使得建造代码和表示代码分离,由于建造者隐藏了该产品是如何组装的,所以如果需要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。

2.实例

#include <iostream>
#include <vector>
#include <string>
using namespace std;

//产品类
class Product
{
public:
    void add(const string &part)
    {
        parts.push_back(part);
    }

    void print() const
    {
        for (const string &i : parts)
        {
            cout << i << endl;
        }
    }
private:
    vector<string> parts;
};

//建造者基类
class Builder
{
public:
    //为多态基类声明一个虚析构函数
    virtual ~Builder()
    {

    }

    //创建部件A
    virtual void buildPartA() = 0;

    //创建部件B
    virtual void buildPartB() = 0;

    //获取创建后的产品
    virtual Product getResult() const = 0;

protected:
    Product product;
};

//具体建造类1
class ConcreteBuilder1 : public Builder
{
public:
    virtual void buildPartA() override
    {
        product.add("Part A1");
    }

    virtual void buildPartB() override
    {
        product.add("Part B1");
    }

    virtual Product getResult() const override
    {
        return product;
    }
};

//具体建造类2
class ConcreteBuilder2 : public Builder
{
public:
    virtual void buildPartA() override
    {
        product.add("Part A2");
    }

    virtual void buildPartB() override
    {
        product.add("Part B2");
    }

    virtual Product getResult() const override
    {
        return product;
    }
};

//指挥者类
class Director
{
public:
    //指挥建造过程
    Product construct(Builder &builder) const   
    {   
        builder.buildPartA();
        builder.buildPartB();
        return builder.getResult();
    }
};

int main()
{
    Director director;
    Builder *b1 = new ConcreteBuilder1();
    Builder *b2 = new ConcreteBuilder2();

    Product p1=director.construct(*b1);
    Product p2=director.construct(*b2);
    p1.print();
    p2.print();

    delete b1;
    delete b2;

    return 0;
}

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 一、设计模式(构建模式)——03建造模式与原型模式

    建造者模式 建造型模式用于创建过程稳定,但配置多变的对象。 建造模式的实现要点: 在建造者模式中,指挥者是直接与客...

  • 创建型模式:建造者模式

    个人公众号原文:创建型模式:建造者模式 五大创建型模式之四:建造者模式。 简介 姓名 :建造者模式 英文名 :Bu...

网友评论

      本文标题:建造者模式

      本文链接:https://www.haomeiwen.com/subject/rwdkxxtx.html