【设计模式】十六、建造者模式

107 阅读2分钟

这是我参与「掘金日新计划 · 2 月更文挑战」的第 16 天,点击查看活动详情

系列文章|源码

github.com/tyronczt/de…

定义-是什么

建造者模式(Builder Pattern)又被称呼为 生成器模式,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。它使用多个简单的对象一步一步构建成一个复杂的对象。

一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。

1、定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示
2、主要作用:在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。
3、如何使用:用户只需要给出指定复杂对象的类型和内容,建造者模式负责按顺序创建复杂对象(把内部的建造过程和细节隐藏起来)
4、解决的问题
(1)、方便用户创建复杂的对象(不需要知道实现过程)
(2)、代码复用性 & 封装性(将对象构建过程和细节进行封装 & 复用)
5、注意事项:与工厂模式的区别是:建造者模式更加关注与零件装配的顺序,一般用来创建更为复杂的对象。

思考-为什么

优点

  • 封装性好,创建和适用分离
  • 扩展性好、建造类之间独立、一定程序上解耦

缺点

  • 产生多于的 Builder 对象
  • 产品内部发生变化,建造者都要修改,成本比较大

建造者与工厂模式区别

建造者模式:

  • 更注重于方法的调用顺序
  • 粒度:创建复杂的产品,由各种复杂的部件组成 工厂模式:
  • 注重于创建产品
  • 粒度:创建的都是一种类型的

应用-怎么用

关于建造者模式的实现例子有好多,有造人、造车、造房子、造世界的...等好多。但归类后有两种实现方式。

(1)通过Client、Director、Builder和Product形成的建造者模式

(2)通过静态内部类方式实现零件无序装配话构造

参考

Java 设计模式——建造者模式(Builder Pattern)

建造者设计模式(生成器模式)