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

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

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

key interface or class:

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

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

structure:

设计模式——构建器(builder)_第1张图片

template codes:

class House{
    //。。。
}

//house的构建基类
class HouseBuilder{
public:
    void Init(){
    //实现构建过程的算法
    this->BuilderPart1();
    
    for(int i=0;iBuilderPart2();
    }
    
    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#)之间调用虚函数的区别。

你可能感兴趣的:(设计模式)