建造者模式
- 定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
- 特征:用户只需要指定需要建造的类型就可以得到他们,建造过程及细节不需要知道。
- 类型:创建型。
- 适用场景:
- 如果一个对象有非常复杂的内部结构(很多属性)。
- 想把复杂的对象创建和使用进行分离。
- 优点:
- 封装性好,创建和使用分离。
- 扩展性好、建造类之间独立、一定程度上解耦。
- 缺点:
- 产生多余的builder对象。
- 产品内部发生变化,建造者读需要修改,成本较大。
- 建造者模式和工厂模式区别:
- 建造者模式注重于方法的调用顺序,工厂模式注重生产产品。
- 建造者模式可以创建出来一些比较复杂的产品,由各种不同的部件组成。工厂模式创建出来的都是一个样。
- 工厂模式只要将产品创建出来就可以了,而建造者模式不仅创建产品还要知道这个产品由哪些部件组成。
- 建造者模式在某些场景下不同的顺序生产不同的产品,而工厂模式不关心顺序
比如StringBuilder源码就用了这个模式