资讯专栏INFORMATION COLUMN

建造者

kviccn / 402人阅读

摘要:建造者模式建造者模式使用多个简单的对象一步一步构建成一个复杂的对象。建造者实用范围当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。参考建造者创建型设计模式之模式

建造者模式
建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。
建造者实用范围
当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
当构造过程必须允许被构造的对象有不同表示时。
建造者主要解决
主要解决在软件系统中,有时候面临着"一个复杂对象"的创建工作,其通常由各个部分的子对象用一定的算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合在一起的算法却相对稳定
定义

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

使用场景

通过上面的定义我们大概已经知道创建模式它是要做什么了

相同的方法,不同的执行顺序,产生不同的事件结果时

多个部件或零件,都可以装配到一个对象中,但是产生的运行结果又不相同时

产品类非常复杂,或者产品类中的调用顺序不同产生了不同的效能,这个时候使用建造者模式非常合适

当初始化一个对象特别复杂,如参数多,且很多参数都具有默认值时

建造者实现

客户

客户提出的需求,比如我想要什么,我需要什么样的,这个我得告诉有这个东西的人对吧或是可以建造的人,那现在客户说了我需要建造一个房子,下面是我们的客户需求码
    class Product {
      constructor () {
          this.bedroom = ""
          this.living = ""
          this.kitchen =""
      }
    }

上面的代码我创建了一个Product类,里面产生了一个卧室的空间变量bedroom,一个客厅living的空间,一个厨房kitchen的空间

抽象建造者类

我们需要找到它们共同的本质,从而写一个属于卧室,客厅,厨房的抽象类函数,那么抽象是什么:从具体事物抽出、概括出它们共同的方面、本质属性与关系等,而将个别的、非本质的方面、属性与关系舍弃,这种思维过程,称为抽象。
总的来说我绝绝的它们是虚无缥缈的东西,需要你自己的思维去想去思考,当然每个人的思考方式,思考的点不同抽象出的本质就不一样
    class house {
        build () {
            console.log("建造")
        }
    }

上面的代码是我们编写一个简单的房子类,我们在这里抽离的本质是它的建造,俗话说就是盖的那种,你懂得~

简单举例:

本质:运动

事物具体的实现:跑步,游泳

本质:射击

事物具体的实现:手枪射击,步枪射击

本质:行驶

事物具体的实现:宝马行驶,奔驰行驶

具体的建造类

就是我们要具体怎么建造卧室bedroom,客厅living,厨房kitchen我们要具体的去实现客户想要的东西
    // 卧室的建造类型
    class Bedroom extends house {
        build () {
            console.log("建造卧室")
        }
    }
    // 客厅的建造类
    class Living extends house {
        build () {
            console.log("建造客厅")
        }
    }
    // 厨房的建造类
    class Kitchen extends house {
        build () {
            console.log("建造厨房")
        }
    }

上面的代码就是我们实现三个不同风格的房子代码实现

指挥官类

这个大家应该可以想象的到它是要干什么吧,就正如我们平常去工地打工建造房子,每个队伍肯定有一个包工头吧,或者是这个房子项目的经理工程师之类,它们肯定每天都会给你们布置任务,今天要完成什么,用什么机器或者是摸具,或者是哪些大型工具什么的
    // 指挥创建用户所需房子
    class Command  {
      construct (build) {
        build.build()
      }
    }

上面则是我们的指挥官类,每个需要创建的房子都要通过它的指挥去完成,没有它是不行的,这样我们也可以达到解耦的效果

代码组合实现



    
    Title





上面我们的代码中多了一个最终产品完成类,主要就是体现通过我们的一系列创建我们完成了哪些东西,也可以依据这些东西再去处理我们的逻辑,以及进行扩展等。
我们首先new一个卧室的构造函数,一个客厅的构造函数,继续new指挥官newCommand构造函数用来指挥创建,newCommand.construct(newBedroom)建造卧室,newCommand.construct(newLiving)建造客厅,通过组装最终产品类提交完成报告。
建造者模式我们今天就讲到这里了,具体的实现以及大概的代码我都已经给大家展示了。
参考: 建造者
创建型设计模式之Builder模式

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/104719.html

相关文章

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

    摘要:而建造者模式则是要求按照指定的蓝图建造产品,它的主要目的是通过组装零配件而产生一个新产品。最后通过一个套餐实例,介绍了建造者模式在实例中的基本使用手段。 历史文章回顾: 设计模式专栏 深入理解单例模式 深入理解工厂模式 历史优质文章推荐: 分布式系统的经典基础理论 可能是最漂亮的Spring事务管理详解 面试中关于Java虚拟机(jvm)的问题看这篇就够了 无论是在现实世界中还是在软件...

    sanyang 评论0 收藏0
  • 我的Java设计模式-建造模式

    摘要:汽车本身就是复杂产品对象,其制造过程可以形象的表示建造者模式。另一辆法拉利,。法拉利具体建造者代码如下构造法拉利的第一部分。咻咻法拉利已造好三建造者模式的优缺点优点降低代码耦合度。 在未上大学之前,一直有个梦想I have a dream!,就是能成为一位汽车工程师,一直幻想着开着自己设计的汽车飞奔在公路上,迷倒了万千少女。咳咳~~虽然现在没实现我的dream,但梦想还是得有的。 说到...

    elisa.yang 评论0 收藏0
  • PHP设计模式(五)建造模式(Builder)

    摘要:与工厂模式相比,建造者模式一般用来创建更为复杂的对象,因为对象的创建过程更为复杂,因此将对象的创建过程独立出来组成一个新的类导演类。 什么是建造者设计模式 建造者模式:将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示的设计模式。 设计场景: 有一个用户的UserInfo类,创建这个类,需要创建用户的姓名,年龄,爱好等信息,才能获得用户具体的信息结果。如: 这是一个...

    KunMinX 评论0 收藏0
  • JavaScript设计模式系列三:建造模式

    摘要:优点建造者模式的封装性很好,对象本身与构建过程解耦。建造者模式很容易进行扩展。适用场景需要生成的对象具有复杂得内部结构且内部属性本身相互依赖建造者模式的代码实现建造者模式主要有个部分产品类建造者类指挥者类客户。建造者完成相应的部分。 建造者模式 建造者模式(builder pattern)比较简单,它属于创建型模式的一种,将一个复杂的对象分解成多个简单的对象来进行构建,将复杂的构建层与...

    CloudDeveloper 评论0 收藏0
  • JS 设计模式 八(建造模式)

    摘要:即建造者模式可以强制实行一种分步骤进行的建造过程。指导类负责调用适当的建造者来组建产品,指导类一般不与产品类发生依赖关系,与指导类直接交互的是建造者类建造者模式优点建造者模式的封装性很好。 建造者模式 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。主要解决在软件系统中,有时候面临着一个复杂对象的创建工作,由于需求的变化,这个复杂对象的某些部分经常面临着剧烈的变化...

    tanglijun 评论0 收藏0

发表评论

0条评论

kviccn

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<