效果
3 ) 它使你可对构造过程进行更精细的控制
Builder模式与一下子就生成产品的创建型模式不同,它是在导向者的控制下一步一步构造产品的。仅当该产品完成时导向者才从生成器中取回它。因此Builder接口相比其他创建型模式能更好的反映产品的构造过程。这使你可以更精细的控制构建过程,从而能更精细的控制所得产品的内部结构。
这是Builder模式和工场模式的重要区别之一。工厂模式(简单工厂或者抽象工厂)是调用接口直接产生产品,中间过程用户无法干预。而Builder模式在创建产品时可以一步一步控制产品的生成过程。这种过程往往是参数无法表达的。
还有一点,抽象工厂模式发生的变化一般都是从一个具象工厂类替换为另一个具象工厂类;而Builder除了替换具象Builder以外,还经常会替换Director。更有甚者,有相当比例的场景,只是通过向Director传递不同的数据来控制Builder生成另外一个(而不是另外一种)产品。这种情况也可以考虑暂时不设计Builder的继承关系。当替换Builder的需要产生时再重构也不迟。
作者观点
没有Builder继承关系的Builder模式,和简单工厂有几分神似。很多时候,只要能做到一个类只做一件事就已经是相当好的设计了。
注:
本文中
蓝 {MOD}粗体文字都引自《设计模式》一书。
觉得本文有帮助?请分享给更多人。
阅读更多更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】