设计模式——构建器(builder)

Factory Method,Abstract Factory,Prototype,Builder属于”对象创建“模式。“对象创建”绕开new,来避免new过程中导致的紧耦合,从而支持创建对象的稳定性。

motivation:在面对“一个复杂对象”创建时,通常其各子部分用一定的算法构成;由于需求变化,各子部分会剧烈变化,但是其算法确实稳定的。

key interface or class:

        1.init函数中实现个子部份的构建算法 。

feature: 和template method很像,但是构造函数不能调用子类的函数(override的版本),因为子类构造时需要先调用父类的构造函数,所以将其放在init函数中。

structure:

template codes:

class House{
    //。。。
}

//house的构建基类
class HouseBuilder{
public:
    void Init(){
    //实现构建过程的算法
    this->BuilderPart1();
    
    for(int i=0;i<N; i++){
        this->BuilderPart2();
    }
    
    if(flag){
        this->BuilderPart3();
    }
  }
protected:
    Hoouse* house;
    virtual BuilderPart1()=0;
    virtual BuilderPart2()=0;
    virtual BuilderPart3()=0;

}

//实现具体的构建类
class StneHouse:public House{
    //具体房子类
}
class StoneHouseBuilder:public HouseBuilder{

    //实现不同的BuilderPart
}

summary:

1. builder模式分步骤构建一个复杂对象,该步骤是一个稳定算法;

2.Builder模式可以应对不同子部份的构建,但是缺点是不能应对算法的变动;

3.builder模式中,要注意不同语言(c++,c#)之间调用虚函数的区别。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值