天天看点

《设计模式之禅》——创建类模式大PK1.工厂方法模式VS建造者模式2.抽象工厂模式VS建造者模式

1.工厂方法模式VS建造者模式

      工厂方法模式注重的是整体对象的创建方法,而建造者模式注重的是部件构建的过程,旨在通过一步步的精确构造创建出一个复杂的对象。

1.1最佳实践

      工厂方法模式和建造者模式都属于对象创建类模式,都用来创建类的对象。但它们之间的区别还是比较明显的:

  • 意图不同

          在工厂方法模式里,我们关注的是一个产品整体,例如超人整体,无须关心产品的各部分是如何创建出来的;但在建造者模式中,一个具体产品的产生是依赖各个部件的产生以及装配顺序。简单地说,工厂模式是一个对象创建的粗线条应用,建造者模式则是通过细线条勾勒出一个复杂对象,关注的产品组成部分的创建过程。

  • 产品的复杂度不同

          工厂方法模式创建的产品一般都是单一性质的产品,而建造者模式创建的则是一个复合产品。工厂方法模式的对象粒度比较粗,建造者模式的产品对象粒度比较细。

2.抽象工厂模式VS建造者模式

      抽象工厂模式实现对产品家族的创建,不需要关心构建过程,只关心什么产品由什么工厂生产即可。

2.1最佳实践

      抽象工厂模式中使用“工厂”来描述构建者,就好比一个一个的工厂,它是从一个更高层次去看对象的构建,具体到工厂内部还有很多的车间。而在建造者模式中使用“车间”来描述构建者。不同的车间完成不同的创建和装配任务,它更关心过程。

      抽象工厂模式比建造者模式的尺度要大,它关注产品整体,而建造者模式关注构建过程,因此建造者模式可以很容易地创建出一个崭新的产品,只要导演类能够提供具体的工艺流程。也正因为如此,两者的应用场景截然不同,如果希望屏蔽对象的创建过程,只提供一个封装良好的对象,则可以选择抽象工厂方法模式。而创建者模式可以用在构建的装配方面,如通过装配不同的组件或者相同组件的不同顺序,可以产生出一个新的对象,它可以产生一个非常灵活的架构,方便地扩展和维护系统。

继续阅读