美文网首页JavaJava架构
程序员内功心法【设计模式】之建造者模式

程序员内功心法【设计模式】之建造者模式

作者: Java架构 | 来源:发表于2020-04-25 17:21 被阅读0次

基本定义

建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式构建复杂对象就像造汽车一样,是一个一个组件一个一个步骤创建出来的,它允许用户通过制定的对象类型和内容来创建他们,但是用户并不需要知道这个复杂对象是如何构建的,它只需要明白通过这样做我可以得到一个完整的复杂对象实例。

模式结构

Builder:抽象建造者。它声明为创建一个Product对象的各个部件指定的抽象接口。

ConcreteBuilder:具体建造者。实现抽象接口,构建和装配各个部件。

Director:指挥者。构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程。

Product:产品角色。一个具体的产品对象。

模式实现

Product 产品角色

Builder 抽象建造者

ConcreteBuilder 具体建造者

卡车

巴士

Director 指挥者

测试类

输出结果

INFO com.yanyuan.gof.build.builder.v2.TruckBuilder - 制造1000马力发动机

INFO com.yanyuan.gof.build.builder.v2.TruckBuilder - 制造高强度车架

INFO com.yanyuan.gof.build.builder.v2.TruckBuilder - 制造2个座位

INFO com.yanyuan.gof.build.builder.v2.TruckBuilder - 制造12个车轮

INFO com.yanyuan.gof.build.builder.v2.Test - 卡车制造完成:Car{engine=‘1000马力发动机’, seats=‘2个座位’, wheels=‘12个车轮’, frame=‘高强度车架’}

INFO com.yanyuan.gof.build.builder.v2.Test - ------------我是分割线------------

INFO com.yanyuan.gof.build.builder.v2.BusBuilder - 制造200马力发动机

INFO com.yanyuan.gof.build.builder.v2.BusBuilder - 制造高强度车架

INFO com.yanyuan.gof.build.builder.v2.BusBuilder - 制造19个座位

INFO com.yanyuan.gof.build.builder.v2.BusBuilder - 制造4个车轮

INFO com.yanyuan.gof.build.builder.v2.Test - 巴士制造完成:Car{engine=‘200马力发动机’, seats=‘19个座位’, wheels=‘4个车轮’, frame=‘高强度车架’}

优点

将复杂产品的创建步骤分解在不同的方法中,使得创建过程更加清晰,使得我们能够更加精确的控制复杂对象的产生过程。

将产品的创建过程与产品本身分离开来,可以使用相同的创建过程来得到不同的产品。也就说细节依赖抽象。

每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者,用户使用不同的具体建造者即可得到不同的产品对象。

缺点

建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用建造者模式,因此其使用范围受到一定的限制。

如果产品的内部变化复杂,可能会导致需要定义很多具体建造者类来实现这种变化,导致系统变得很庞大。

使用场景

需要生成的产品对象有复杂的内部结构,这些产品对象通常包含多个成员属性。

隔离复杂对象的创建和使用,并使得相同的创建过程可以创建不同的产品。

总结

建造者模式是将一个复杂对象的创建过程给封装起来,客户只需要知道可以利用对象名或者类型就能够得到一个完整的对象实例,而不需要关心对象的具体创建过程。

建造者模式将对象的创建过程与对象本身隔离开了,使得细节依赖于抽象,符合依赖倒置原则。可以使用相同的创建过程来创建不同的产品对象。

JDK源码

AbstractStringBuilder 抽象建造类

StringBuilder 具体建造类

StringBuffer 具体建造类

相关文章

  • 程序员内功心法【设计模式】之建造者模式

    基本定义 建造者模式将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。 建造者模式构建复杂对象...

  • 二、设计模式总览及工厂模式详解

    二、架构师内功心法之设计模式 2.架构师内功心法之设计模式 2.1.课程目标 1、通过对本章内容的学习,了解设计模...

  • 架构师学习路线图

    内功心法 设计模式 软件设计原则 软件设计模式创建型模式Factory 工厂模式Singleton 单例模式Pro...

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

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

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • Javaの设计模式之建造者模式

    推荐阅读:《设计模式之禅》 今早早起,刚刚出炉,哈哈 BuilderPattern 设计模式之建造者模式 Demo...

  • 设计模式之建造者模式

    设计模式之建造者模式 建造者模式 属于 创建型模式,提供一种创建对象的最佳方式。 创建型模式 指不是直接使用ne...

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • 深入理解设计模式的设计原则

    设计原则 设计原则,是设计模式的内功心法,基本所有的设计模式都是基于设计原则进行的具体化,如果说设计模式是如何操作...

网友评论

    本文标题:程序员内功心法【设计模式】之建造者模式

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