三分钟理解“建造者模式”——设计模式轻松掌握

“建造者模式”生活中的例子:

肯德基做汉堡的过程都是有严格的规范的,不管是麦香鸡腿堡还是新奥尔良烤鸡腿堡,他们的制作步骤都是有严格规定,做汉堡的人既不能多做一步,也不能少做一步。对于不同的汉堡来说,虽然每一步加的料所有不同,但做汉堡的步骤都是一样的。因为有了对做汉堡过程的严格控制,因而全国所有的肯德基店做出来的汉堡味道都是一样的。

这些汉堡就是一个个对象,刚被创建出来的时候它就是两片面包片,没有任何内容;然后我们把它扔到一个流水线上,这个流水线会按照指定的步骤往汉堡对象中逐步添加材料;当汉堡走完一遍流程后,一个汉堡就做好了。

在这个过程中,汉堡就是一个需要被构造的对象,做汉堡的所有步骤就是一个个函数,他们被封装在一个建造者类中,流水线就是一个控制类,确保每一个步骤依次执行。

建造者模式的类图:

1.把做一件事情所有的步骤作为抽象函数写到接口Builder中;

2.在实现类中重写所有抽象函数;

3.将建造者对象传递给指挥者,让指挥者依次执行所有的步骤;

4.通过Product的getProduct(),获取最后生成的对象。

建造者模式的好处:

初始化一个对象时,原本对象的参数需要客户程序自己设置;若设置对象参数的过程非常复杂,那么客户程序就会变的复杂;此时使用建造者模式,将一个对象复杂的构造过程封装在一个个建造者类中,不同的建造者类对应着不同的对象构建的方法;也就是该模式在客户端隐藏了该产品是如何组装的,若需要改变一个产品的内部表示,是需要换一个具体的建造者就可以了。避免了客户程序在构建复杂对象时候的大量代码,使得客户程序变的简洁。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

数据结构与算法–关键路径

关键路径与无环加权有向图的最长路径 现在考虑一个这样的问题:你今天事情比较多,要洗衣服、做作业还要烧水洗澡,之后出去找朋友玩。假设洗衣服要20分钟,烧水要30分...

2647
来自专栏逸鹏说道

【SQLServer】记一次数据迁移-标识重复的简单处理

汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 今天在数据迁移的时候因为手贱遇到一个坑爹问题,发...

3336
来自专栏用户画像

1.3.1 计算机的主要性能指标

机器字长是指计算机进行一次整数运算(即定点整数运算)所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器有关。所以机器字长一般等于内存寄存器的大小,字长...

703
来自专栏Java架构师学习

今天是JVM的生日,来了解下JVM的发展历史吧

852
来自专栏CDA数据分析师

一个初级python web后端开发工程师的面试总结

原文链接:https://blog.csdn.net/ayocross/article/details/56509840

793
来自专栏java一日一条

有经验的Java开发者和架构师容易犯的10个错误(上)

首先允许我们问一个严肃的问题?为什么Java初学者能够方便的从网上找到相对应的开发建议呢?每当我去网上搜索想要的建议的时候,我总是能发现一 大堆是关于基本入门的...

502
来自专栏PPV课数据科学社区

据说这篇总结覆盖了一般Python开发面试中可能会问到的大部分问题

? 原文标题:一名python web后端开发工程师的面试总结 先介绍下我的情况 通信背景,工作一年多不到两年。之前一直在做C++的MFC软件界面开发工作。公...

3646
来自专栏程序猿DD

程序员你为什么这么累【续】:编码习惯-函数编写建议

之前系列文章里面完整的代码已经上github,地址在文章最后 傻瓜都能写出计算机可以读懂的代码,只有优秀的程序员才能写出人能读懂的代码! 在我看来,编写简单的函...

19310
来自专栏java一日一条

为什么用 Java:一个 Python 程序员告诉你

说实话,本人刚开始的时候也是同样的反应。但是由于Java的类型安全,执行性能和坚如磐石的工具,我渐渐地开始欣赏Java。同时我注意到,现在的Java已今非昔比—...

271
来自专栏杨建荣的学习笔记

浅谈pl/sql (r3笔记第14天)

关于pl/sql,可能大家熟悉而又陌生,熟悉是因为大家在工作中老是写sql,如果稍微改动一些,加入begin,end和控制结构,就是pl/sql了。:) 今...

3339

扫描关注云+社区