设计模式-(4)生成器(建造者)模式
2017-10-07 21:12
204 查看
一,生成器模式(建造者模式)
有的时候,创建某些对象有多种不同的方式,如果这些逻辑包含在构建这些对象的类的单一方法中,构建的逻辑会非常荒诞(需要大量的if else,switch等语句)。如果能够把构建的过程分解成 客户-指导者-生成器(client-director-builder)的关系,那么过程可以更加容易管理和复用。这种关系的设计模式,就是生成器。
除了客户和所需的产品,生成器还包含两个重要的角色 指导者(director)和生成器(builder)。Builder知道如何在缺少某些特定信息的情况下创建产品。Director知道builder应该创建什么,以参数形式向其提供缺少的信息来建造产品。
生成器模式类图:
Builder:一个抽象的接口,声明buildPart方法。
ConcreateBuilder:Builder的实现类,实现buildPart方法,同时提供getResult方法,负责向客户端返回构建完毕的Product对象。
Director:定义了construct方法,调用Builder执行buildPart
client,director,builder三者运行时交互图:
client生成ConcreteBuilder对象,和以ConcreteBuilder为初始化参数的Director实例对象,用于协同工作。当client发送construct方法给Director时候,方法调用ContreteBuilder的buildPartA,buildPartB,buildPartC等方法,构建对象组成部分。construct方法执行完毕以后,client调用getResult方法获取创建好的产品对象。
二,应用场景
1,需要创建涉及各种部件的复杂对象。创建对象的算法应该独立独立部件的装配方式。常见是构建组合对象
2,构建过程需要以不同的方式(部件或者表现的不同组合)构建对象。
三,生成器和抽象工厂
四,代码示例。
有的时候,创建某些对象有多种不同的方式,如果这些逻辑包含在构建这些对象的类的单一方法中,构建的逻辑会非常荒诞(需要大量的if else,switch等语句)。如果能够把构建的过程分解成 客户-指导者-生成器(client-director-builder)的关系,那么过程可以更加容易管理和复用。这种关系的设计模式,就是生成器。
除了客户和所需的产品,生成器还包含两个重要的角色 指导者(director)和生成器(builder)。Builder知道如何在缺少某些特定信息的情况下创建产品。Director知道builder应该创建什么,以参数形式向其提供缺少的信息来建造产品。
生成器模式类图:
Builder:一个抽象的接口,声明buildPart方法。
ConcreateBuilder:Builder的实现类,实现buildPart方法,同时提供getResult方法,负责向客户端返回构建完毕的Product对象。
Director:定义了construct方法,调用Builder执行buildPart
client,director,builder三者运行时交互图:
client生成ConcreteBuilder对象,和以ConcreteBuilder为初始化参数的Director实例对象,用于协同工作。当client发送construct方法给Director时候,方法调用ContreteBuilder的buildPartA,buildPartB,buildPartC等方法,构建对象组成部分。construct方法执行完毕以后,client调用getResult方法获取创建好的产品对象。
二,应用场景
1,需要创建涉及各种部件的复杂对象。创建对象的算法应该独立独立部件的装配方式。常见是构建组合对象
2,构建过程需要以不同的方式(部件或者表现的不同组合)构建对象。
三,生成器和抽象工厂
生成器 | 抽象工厂 |
构建复杂对象 | 构建简单活着复杂对象 |
以多个步骤构建对象 | 以单一步骤构建对象 |
以多种方式构建对象 | 以单一方式构建对象 |
在构建过程的最后一步返回产品 | 立刻返回产品 |
专注一个特定的产品 | 强调一套产品 |
相关文章推荐
- 设计模式之建造者模式(生成器模式、Builder)摘录
- 设计模式之建造者模式(生成器模式、Builder)摘录
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- 我的设计模式之旅(4)——生成器(建造者)模式Builder
- 读书笔记_java设计模式深入研究 第四章 生成器模式 (建造者模式) Builder
- 我的设计模式之旅(4)――生成器(建造者)模式Builder
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- Android设计模式系列(12)--SDK源码之生成器模式(建造者模式)
- Android设计模式---之生成器模式(建造者模式)
- 23种设计模式-23-建造者(生成器)模式
- 设计模式——生成器(建造者)模式
- 设计模式 笔记 生成器(建造者)模式 Builder
- 设计模式 笔记 生成器(建造者)模式 Builder
- Java设计模式04--建造者(生成器)模式
- 【设计模式】建造者(生成器)
- C语言和设计模式(建造者模式)
- 【设计模式】——建造者模式 单例模式
- 设计模式C++实现(6)——建造者模式
- 设计模式-生成器模式