Builder(生成器)适用性
在一下情况下使用Builder模式
- 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
- 当构造过程必须允许被构造的对象有不同的表示时。
结构
Builder 生成器结构.png简单举个例子
首先看下图
- Builder (TextConverter)
-- 为创建一个Product对象的各个部件指定抽象接口 - ConcreteBuilder (ASCIIConverter、TeXConverter、TextWidgetConverter)
--实现Builder的接口一构造和装配该产品的各个部件。
--定义并明确它所创建的表示。
--提供一个检索产品的接口 - Director (RTFReader)
--构造一个使用Builder接口的对象。 - Product (ASCIITect、TeXText、TextWidget)
--表示被构造的负载对象。
--包含定义组成部件的类,包括将这些部件装配成最终产品的接口。 - 协作图
Bridge (桥接)--对象结构
适用性
1. 你不希望在抽象和它的实现部分之间有一个固定的绑定关系。
2. 类的抽象以及它的实现都应该可以通过生成子类的方法加以扩充。
3. 对一个抽象的实现部分的修改应对应客户不产生影响,即客户的代码不必重新编译
4. 你想对客户完全隐藏抽象的实现部分。
5. 你想在多个对象间共享实现(可能使用引用计数),但同时要求客户并不知道这一点。
网友评论