专栏首页关忆北.设计模式之建造者模式

设计模式之建造者模式

建造者模式

定义:生成器模式是一种创建型设计模式, 使你能够分步骤创建复杂对象。 该模式允许你使用相同的创建代码生成不同类型和形式的对象。

如果你有一个需求:

你需要建造一座豪华别墅,需要安装泳池、暖气、和田玉地板、供电、宽带等。

方案一

  • 按最简单的思路来,你可以在规划别墅时把可能所需的条件准备妥当(在类中加入所需属性),建造即可(通过构造方法创建一个对象,将所需条件放入构造方法),这样做可以满足需求,显然有一个弊端便是:构造方法代码量高,且可能会出现很多属性为Null的情况。

方案二

  • 你可以创建一个House父类,在此基础上,根据客户的需求再创建其子类。这样做的缺点是:代码过于复杂。

建造者模式解决方案

将对象构造代码从产品类中抽取出来, 并将其放在一个名为生成器的独立对象中。

建造者的角色

生成器 (Builder)

​ 接口声明在所有类型生成器中通用的产品构造步骤。

具体生成器 (Concrete Builders)

​ 提供构造过程的不同实现。 具体生成器也可以构造不遵循通用接口的产品。

产品 (Products)

​ 最终生成的复杂对象(为客户定做的别墅)。这些产品类并不一定有共同的接口,完全可以是不相关联的。

主管 (Director)

​ 定义调用构造步骤的顺序, 这样你就可以创建和复用特定的产品配置。

客户端 (Client)

​ 必须将某个生成器对象与主管类关联。(主管知道需要哪些创建步骤才能获取正常使用的产品) 一般情况下, 你只需通过主管类构造函数的参数进行一次性关联即可。 此后主 管类就能使用生成器对象完成后续所有的构造任务。 但在客户端将生成器对象传递给主管类制造方法时还有另一方式。 在这种情况下, 你在使用主管类生产产品时每次都可以使用不同的生成器。

talk is cheaper,show me your code.

分步制造汽车,生成器模式允许你分步骤地制造不同型号的汽车。

本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!
本文分享自作者个人站点/博客:https://blog.csdn.net/weixin_42313773复制
如有侵权,请联系 cloudcommunity@tencent.com 删除。
登录 后参与评论
0 条评论

相关文章

  • 设计模式之建造者模式

    作为一名码农,最难得的应该就是找对象了,就算勉强找到了,要是对人家不好,人家可就离你远去了。所以要对人家好点,学会做饭,多弄几个花样出来,让生活充满新鲜感,小两...

    Edison.Ma
  • 设计模式之建造者模式

    tanoak
  • 设计模式之建造者模式

    有些情况下,一个大类需要依赖另外一些小类共同完成一个需求,就好像一个完整的手机需要CPU,屏幕等小零件组成。

    DotNet致知
  • 建造者模式【建造者模式设计模式】

    指将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。它是将一个复杂的对象分解为多个简单的对象,然后一步一步...

    高大北
  • 设计模式之建造者模式

    本文由老王家组装电脑引出——建造者设计模式,详细介绍建造者模式的基本概念和实现代码,为了便于理解建造者模式,我们会对实际应用中的典型案例进行介绍。最后对比工厂模...

    程序员田同学
  • 设计模式之建造者【设计模式】

    建造者模式   建造者模式,顾名思义的就是类似建房子,有一个固定的流程。在大话设计模式中,作者举了一个例子大概意思是同一道菜在中国的每一个地方都有不同的味道(L...

    简单的程序员
  • 设计模式之建造者模式

    从800万年前东非大裂谷出现造就非洲猿開始随环境不断进化到类人猿、猿人,最后随着历史的脚步进化到现代智人。人类的脚步,从来就不曾停止;人类文明的进步不断加快...

    全栈程序员站长
  • 设计模式之建造者模式(Builder 模式)

    建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    海盗船长
  • 设计模式之十一(建造者模式)

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

    aehyok
  • 设计模式之建造者模式Builder

    实际代码我放在了Github: https://github.com/liangtengyu/DesignPatterns-for-Java

    Java宝典
  • go设计模式之建造者模式

    func NewBuilder(build Builder) *Director {

    暮雨
  • ​PHP设计模式之建造者模式

    建造者模式,也可以叫做生成器模式,builder这个词的原意就包含了建筑者、开发者、创建者的含义。很明显,这个模式又是一个创建型的模式,用来创建对象。那么它的特...

    硬核项目经理
  • Java设计模式之建造者模式

    因为我们公司制造的悍马汽车得到了客户的满意(Java设计模式之模板方法模式),所以宝马和奔驰也纷纷要和我们公司合作,但是客户提出了新的需求:汽车的启动、停止、喇...

    CoderJed
  • dart设计模式之建造者模式

    建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。

    nuts
  • 设计模式5之建造者模式

    一个复杂的对象往往由多个子部件按一定的步骤组成。例如,汽车由发动机、轮胎、方向盘等部件组成的。

    Lvshen
  • 设计模式:建造者模式

    在生活中存在很多复杂的对象,就拿我们每天都见到的汽车举例,它由轮胎、方向盘、发动机、外壳等各种部件组成的,可谓是相当复杂。

    王强
  • 设计模式----建造者模式

    建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一种对象创建型模式。

    大忽悠爱学习
  • 【设计模式-建造者模式】

    将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。

    Liusy
  • 设计模式——建造者模式

    设计模式——建造者模式

    Java架构师必看

扫码关注腾讯云开发者

领取腾讯云代金券