设计模式C++版:第四式建造者模式
2016-08-18 22:23
387 查看
开始建造者模式之前,我们先提出使用建造者模式的使用场景——有一个复杂对象需要构建,且构建过程是稳定的,这个时候我们可以考虑建造者模式。比如创建四边形,我们可以设定一个画图方式——顺时针画图。也就是说先画上面的一条边,再画右边的边,接着画下面的边,最后画左边的边。这个构造过程是稳定的。其实无论是顺时针还是逆时针或者是交叉画,一旦确定下来规则,整个构造过程就是稳定的了。当然你不能画三条边或者六条边,因为一旦你话的边的数量变化了,你构造的对象也就不再是所需要的对象了。所以说使用建造者模式的重点在于,建造者的过程是稳定的。如果一个对象的创建过程不稳定,或者说具有很大的灵活性,那时我们需要考虑设计模式的另一个招式——装饰者模式。
下面是关于建造者模式的示例:
下面是关于建造者模式的示例:
#include <iostream> class Builder { public: virtual ~Builder(){ } virtual void buidehead(){} virtual void buidebody(){} virtual void buidearms(){} virtual void buidelegs(){} }; class FatBuilder :public Builder { public: virtual void buidehead() { printf("建造肥大的头部!\n"); } virtual void buidebody() { printf("建造肥大的躯体!\n"); } virtual void buidearms() { printf("建造肥大的胳膊!\n"); } virtual void buidelegs() { printf("建造肥大的腿部!\n"); } }; class ThinBuilder :public Builder { public: virtual void buidehead() { printf("建造消瘦的头部!\n"); } virtual void buidebody() { printf("建造消瘦的躯体!\n"); } virtual void buidearms() { printf("建造消瘦的胳膊!\n"); } virtual void buidelegs() { printf("建造消瘦的腿部!\n"); } }; //用户直接和Director --- 指挥者打交道 创建人 class Driector { public: Driector(Builder*builder) :m_builder(builder){} void createperson() { m_builder->buidehead(); m_builder->buidebody(); m_builder->buidearms(); m_builder->buidelegs(); } private: Builder * m_builder; }; int main() { Builder *builder = new ThinBuilder; //Builder *builderfat = new FatBuilder; Driector directorthin(builder); directorthin.createperson(); delete builder; builder = new FatBuilder; Driector directorfat(builder); directorfat.createperson(); delete builder; return 0; }
建造者模式的优点就是我们把建造的过程和它的表示分离,也就是说同样的建造过程可以创建不同的表示,得到不同的具体对象。其实也就是我们在创建过程之上又抽象了一层。
相关文章推荐
- 设计模式C++实现(3)——建造者模式
- C++设计模式实现--建造者
- C++设计模式之建造者模式(三)
- 设计模式C++实现九:建造者模式
- C++设计模式之建造者模式
- 设计模式五(建造者模式,采用C++实现)
- 设计模式之建造者模式 c++实现和详细分析
- C++设计模式从0进击-4-建造者模式
- C++设计模式之建造者模式(一)
- C++设计模式之建造者模式
- c++ 23种设计模式之建造者模式
- 设计模式C++实现(6)——建造者模式
- 设计模式C++描述----07.建造者(Builder)模式
- C++设计模式----建造者模式
- 设计模式C++描述----07.建造者(Builder)模式
- //c++ 23种设计模式之建造者模式2
- C++设计模式之Builder(建造者)模式
- 设计模式C++实现(6)——建造者模式
- C++设计模式-Builder建造者模式
- C++设计模式之建造者模式