建设者模式

简介
建造者模式:
将一个复杂对象的构建和他的表示分离,使得相同的构造过程可以创建不同的表示。
重点:相同的构造过程产生不同的表示。

构成
Product产品类,通过模板方法模式实现,有基本方法和模板方法
Builder抽象建造者,规范产品的组件,一般由子类实现
ConcreteBuilder具体建造者,实现抽象类定义的所有方法,并返回一个创建好的对象
Director导演类,负责安排已有模块的顺序,然后告诉建造者开始建造

常用的场景
相同方法,不同顺序
多个部件可以组装,但是产生的结果不同时
产品类非常复杂或者调用顺序不同,产生的功能不同
对象创建过程中会使用到的系统中的其他对象时,这些对象在产品对象的创建过程不易得到时,可以采用建造者模式疯长该对象的创建过程。这是一个补偿方法。

优点
封装性
建造者独立,容易扩展–》就是这个所谓不同的顺序的具体描述了
便于控制细节风险,细节问题封装在建造者中,所以互不影响

区别
建造者模式关注的是零件类型和装配工艺(顺序)这是他和工厂模式最大的不同。
模板方法侧重子类控制父类

测试代码

#include <iostream>
#include <assert.h>
using namespace std;

//产品
class FProduct
{
public:
    void add(char data){};
};

//虚拟生产者
class FBaseBuilder
{
public:
    virtual void addA(){};
    virtual void addB(){};
    virtual void addC(){};
};

//具体生产者
class FBuilderA : public FBaseBuilder
{
public:
    void addA(){};
    void addB(){};
    void addC(){};
};

class FBuilderB : public FBaseBuilder
{
public:
    void addA(){};
    void addB(){};
    void addC(){};
};

//指挥者
class FBuilderDirector
{
public:

    void create( FBaseBuilder* builder )
    {
        builder->addA();
        builder->addB();
        builder->addC();
    }
};


void main()
{
    FBuilderDirector bulderDirector;
    FBuilderB b;
    FBuilderA a;

    bulderDirector.create(&a);
    bulderDirector.create(&b);

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值