美文网首页
建造者模式

建造者模式

作者: 特快捷键 | 来源:发表于2020-08-14 16:31 被阅读0次

学习记录

建造者模式(Builder Pattern),又名生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来,使这个抽象过程的不同实现方法可以构造出不同的对象。

使用场景

1. 需要生成的对象具有复杂的内部结构。

2. 需要生成的对象内部属性本身相互依赖。

3. 多个部件都可以装配到一个对象中,但产生的运行结果不相同。

4. 初始化一个对象,参数过多,或者很多参数具有默认值。

模式的结构与实现

1. 产品(Product):它是包含多个组件部件的复杂对象,由具体建造者来创建各个部件。

2. 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 finishBuild()。

3. 具体建造者(Concrete Builder):实现Builder接口,完成复杂产品的各个部件的具体创建方法。

4. 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。

建造者模式结构图

模式讲解:

1. 指挥者(Director)直接和客户(Client)进行需求沟通。

2. 沟通后指挥者将客户创建产品的需求交给抽象构造者(Builder)。

3. 抽象构造者将构造的信息交给具体的建造者(Concrete Builder)来进行产品的构建。

4. 最后由建造者(Concrete Builder)将构造出来的产品返回给客户。

注意:

建造者(Builder)模式在应用过程中可以根据需要改变,如果创建的产品种类只有一种,只需要一个具体建造者,这时可以省略掉抽象建造者,甚至可以省略掉指挥者角色。

例子:

样例结构

一个订单类中包含了多个任务类,每个任务类有自己具体的执行逻辑和参数内容。在创建订单的时候需要根据业务需求添加具体的任务类,并给任务类初始化参数。由于这个过程的赋值和创建过程会由于业务逻辑创建出不同的订单,所以使用OrderBuilder类来创建订单类。

优点:

1. 使用建造者模式可以使客户端不必知道产品内部组成的细节。

2. 具体的建造者类之间是相互独立的,这有利于系统的扩展。

3. 具体的建造者相互独立,因此可以对建造的过程逐步细化,而不会对其他模块产生任何影响。

缺点:

如果构建的产品具有很大的差异性,就不适合用建造者模式。

参考内容:

https://www.jianshu.com/p/3d1c9ffb0a28

http://c.biancheng.net/view/1354.html

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 一、设计模式(构建模式)——03建造模式与原型模式

    建造者模式 建造型模式用于创建过程稳定,但配置多变的对象。 建造模式的实现要点: 在建造者模式中,指挥者是直接与客...

  • 创建型模式:建造者模式

    个人公众号原文:创建型模式:建造者模式 五大创建型模式之四:建造者模式。 简介 姓名 :建造者模式 英文名 :Bu...

网友评论

      本文标题:建造者模式

      本文链接:https://www.haomeiwen.com/subject/invgdktx.html