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

简介: 生成器模式(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 数据库连接
解锁设计模式的神秘面纱:编写无懈可击的代码之建造者设计模式
解锁设计模式的神秘面纱:编写无懈可击的代码之建造者设计模式
179 0
|
设计模式 Java
「全网最细 + 实战源码案例」设计模式——生成器模式
生成器模式(Builder Pattern)是一种创建型设计模式,用于分步骤构建复杂对象。它允许用户通过控制对象构造的过程,定制对象的组成部分,而无需直接实例化细节。该模式特别适合构建具有多种配置的复杂对象。其结构包括抽象建造者、具体建造者、指挥者和产品角色。适用于需要创建复杂对象且对象由多个部分组成、构造过程需对外隐藏或分离表示与构造的场景。优点在于更好的控制、代码复用和解耦性;缺点是增加复杂性和不适合简单对象。实现时需定义建造者接口、具体建造者类、指挥者类及产品类。链式调用是常见应用方式之一。
325 12
|
设计模式 Java 编译器
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
设计模式——创建型模式(工厂,简单工厂,单例,建造者,原型)
|
设计模式 项目管理
设计模式的基础问题之生成器模式在项目管理应用的问题如何解决
设计模式的基础问题之生成器模式在项目管理应用的问题如何解决
121 0
|
C++ 设计模式
iLogtail设计模式问题之生成器模式的Product(产品)角色是什么
iLogtail设计模式问题之生成器模式的Product(产品)角色是什么
|
设计模式 算法 索引
程序技术好文:设计模式之美:Builder(生成器)
程序技术好文:设计模式之美:Builder(生成器)
|
设计模式 Java 领域建模
23种设计模式漫画版系列—生成器模式(二)
23种设计模式漫画版系列—生成器模式(二)
213 0
|
设计模式 uml
23种设计模式漫画版系列—生成器模式(一)
23种设计模式漫画版系列—生成器模式
311 0
|
设计模式
设计模式-创建型模式:建造者
设计模式-创建型模式:建造者
236 0
|
设计模式 算法 Java
【设计模式 】| 建造者源码学习与实践
为什么要用建造者模式?在我们看来他和工厂模式的目的是一样的,就是为了获取对象。