设计模式学习<4>C++实现---Builder模式
Builder建造者模式,将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
上图的类关系主要是这样的:
有两种车要生产:benz和BMW, 其中每种不同品牌的车里面还有小的分类,比如有些BENZ车要加入一些功能如(EngineBoom,并不是所有的车都有)。
所以我们先创建一个abstract类,里面有生产车的各个步骤的抽象方法,然后是BENZ车和BMW车都去继承这个类,各自实现自己抽象类里各个步骤的具体方法。
然后创建builder模式中关键的类builder类,该类用来实现按顺序去创建具体的产品,然后针对每种产品创建出一个相对应的builder继承抽象builder类。
然后是direct类,该类作为指导类,用来确定到底按照什么顺序创建对象。
下面解析direct类:
①共有四种产品需要创建,benz的AB两种,BMW的CD两种。
②创建两个具体的builder,此处好像工厂抽象工厂啊。
③具体方法的实现如下(以benz的AB两种车为例)
B种车加入了engine boom功能,setsequence里面就依次按照上面的顺序实现方法,实现后用get方法返回。
最后用K_Eckel的话总结辨别一下:
Builder模式和AbstractFactory模式在功能上很相似,因为都是用来创建大的复杂的对象,它们的区别是:Builder模式强调的是一步步创建对象,并通过相同的创建过程可以获得不同的结果对象,一般来说Builder模式中对象不是直接返回的。而在AbstractFactory模式中对象是直接返回的,AbstractFactory模式强调的是为创建多个相互依赖的对象提供一个同一的接口。
图片和示例来自http://www.cnblogs.com/wanggary/archive/2011/04/15/2017615.html 的博客,感谢。