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

简介: 生成器模式(Builder)生成器模式最初的定义出现于《设计模式》(Addison-Wesley,1994)生成器模式:将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。

生成器模式(Builder)

生成器模式最初的定义出现于《设计模式》(Addison-Wesley,1994)

生成器模式:将一个复杂对象的构建与它的表现分离,使得同样的构建过程可以创建不同的表现。

生成器模式的类图如下:


img_00d5384a5601d165df4eea086ede3adf.png
生成器类图

除了客户与其所要的产品,生成器模式还包含两个重要角色:Director(指导者)和Builder(生成器)。Builder知道究竟如何在缺少某些特定信息的情况下建造产品(什么)。Director知道Builder应该建造什么,以参数向其提供缺少的信息来建造特定产品。尽管Director知道Builder应该建造什么,这并不意味着Director知道具体Builder究竟是什么。他们的静态关系如上图中的类图所示。

Builder是一个抽象接口,声明了一个buildPart方法,该builder方法由ConcreteBuilder实现,以构造实际产品(Product)。ConcreteBuilder有个getResult方法,向客户端返回构造完毕的Product。Director定义了一个construct方法,命令Builder的实例去builderPart。Director与Builder形成了一种聚合关系。这意味着Builder是一个组成部分,与Director结合,以使整个模式运转,但同时,Director并不负责Builder的生存期。

何时使用生成器模式?

在以下情形,你自然会想到使用工厂方法模式:

  1. 需要创建设计各种部件的负责对象。创建对象的算法应该独立于部件的装配方式。
  2. 构建过程需要以不同的方式(例如,部件或者表现的不同组合)构建对象。
生成器与抽象工厂对比
生成器 抽象工厂
构建负责对象 构建简单或者复杂对象
以多个步骤构建对象 以单一步骤构建对象
以多种方式构建对象 以单一方式构建对象
在构建过程的最后一步返回产品 立刻返回产品
专注一个特定产品 强调一套产品

喜欢我的可以关注收藏我的个人博客:RobberJJ

附生成器模式的Demo:DesignPattern_Builder

目录
相关文章
|
设计模式 Java 数据库连接
解锁设计模式的神秘面纱:编写无懈可击的代码之建造者设计模式
解锁设计模式的神秘面纱:编写无懈可击的代码之建造者设计模式
64 0
|
7月前
|
设计模式 Java 编译器
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
|
设计模式
设计模式-创建型模式:建造者
设计模式-创建型模式:建造者
|
设计模式 存储 Java
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(下)
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(下)
207 0
|
设计模式 存储 SQL
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(上)
【Java设计模式 规范与重构】 五 重构实战:基于ID生成器case(上)
148 0
|
设计模式 Java C++
设计模式-建造者设计模式
建造者模式(Builder Pattern),又叫做生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。 建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容可构建它,用户不需要知道内部的具体构建细节。
98 0
|
设计模式 算法 Java
【设计模式 】| 建造者源码学习与实践
为什么要用建造者模式?在我们看来他和工厂模式的目的是一样的,就是为了获取对象。
|
设计模式
设计模式之建造者
设计模式之建造者
132 0
设计模式之建造者
|
设计模式
设计模式是什么鬼(建造者)
设计模式是什么鬼(建造者)
设计模式是什么鬼(建造者)
|
设计模式 SQL 缓存
设计模式:单例、原型和生成器
设计模式:单例、原型和生成器
161 0