19 Builder创建者(创建型)
19 Builder创建者(创建型)
-
- 动机:
- RTF(富文本格式)文档交换格式的阅读器应该能够将RTF转换为许多文本格式。但是,可能的转换数量是开放的。因此,在不修改阅读器的情况下添加新的转换应该很容易。
- 建造者模式将产品的结构和产品的零件建造过程对客户端隐藏起来,把对建造过程进行指挥的责任和具体建造者零件的责任分割开来,达到责任划分和封装的目的
-
- 什么时候用:
- 创建复杂对象的算法应该独立于组成对象的各个部分以及它们的组装方式。
- 构造过程必须允许被构造对象的不同表示。
- 结构:
- 参与者:
- Builder:指定用于创建产品对象部分的抽象接口。生成一个地基
- concrete builder:
- 构造和组装产品的各个部分。
- 定义并跟踪它创建的表示。
- 提供了检索产品的接口(方法)。
- Director:使用Builder接口构造对象。
- product:表示正在构建的复杂对象。
- 协作:
- 客户端创建Director对象,并将其配置为所需的Builder对象。
- 当需要构建产品的一部分时,Director通知构建器Builder。
- Builder处理来自director的请求并向产品添加部件。
- 客户端检索(取回)的产品构建器。
- 后果:
- 它允许您更改产品的表示形式。
- 构建器模式可以为director提供一个抽象的构建器来构建产品。
- 它隔离了用于构造和表示的代码。
- 构建器模式通过封装复杂对象的构造和表示方式来改进模块性。客户不需要知道任何定义产品内部结构的类;此类类不会出现在builder的接口中。
- 它能让你更好地控制施工过程。
- 构建器模式在director的控制下逐步构建产品。只有当产品完成时,客户端才从构建器检索它。
- 它允许您更改产品的表示形式。
- Builder VS Template Method
- 在Builder模式中,Director决定Builder中方法的调用顺序;
- 什么时候用:
-
- 在模板方法中,超类决定子类方法的调用顺序。