惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
GbyAI
GbyAI
aimingoo的专栏
aimingoo的专栏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
月光博客
月光博客
大猫的无限游戏
大猫的无限游戏
M
MIT News - Artificial intelligence
腾讯CDC
博客园 - Franky
Engineering at Meta
Engineering at Meta
C
Check Point Blog
T
The Blog of Author Tim Ferriss
有赞技术团队
有赞技术团队
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog
I
InfoQ
Blog — PlanetScale
Blog — PlanetScale
P
Proofpoint News Feed
The GitHub Blog
The GitHub Blog
N
Netflix TechBlog - Medium
Last Week in AI
Last Week in AI
S
SegmentFault 最新的问题
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
WordPress大学
WordPress大学

博客园 - 心雨无痕

升级openssl和openssh linux配置LVM 杂七杂八 .net程序包含webbrowser插件时遇到的各种问题 mysql连接远程服务器很慢的解决方法 centos安装php需要注意的问题 centos配置nfs杂七杂八 iptables配置网络端口转发 桥接模式 适配器模式 单例模式 原型模式 工厂方法模式 简单工厂模式 ActionScript中Object和Dictionary的区别 FlashBuilder4.5破解方法 抽象工厂模式 设计模式浅见 了解下常见的开源协议
建造者模式
心雨无痕 · 2012-05-20 · via 博客园 - 心雨无痕

    建造者模式可以将一个产品的内部实现和它的构造过程分割开来,从而可以将复杂对象的构建过程外部简单化的目的。

    为什么要用这个模式

有些产品结构比较复杂,构成产品的零件有许多个,这许多个零件又没有什么关系,并且这些零件的组合是有必须的顺序的,比如说组装汽车(我不懂如何组装汽车哈,瞎说举例而已):要先制作好底座,然后在底座上安装发动机,安装电路油路,安装座椅,然后安装车皮,安装轮子,最后安装车门。其中底座、发动机、电路油路、座椅这些都是零件(对软件来讲就是模块就是类)。这些零件要组合成汽车需要一个复杂的过程,需要一个专门的建造者来管理这些建造步骤,建造者一般只负责管理上述几个步骤(做底座、装发动机等)的具体实施,步骤之间的顺序和协调一般还需要有专门的设计师来进行指导,这就是指导者角色;而由于上述零件可以用于多种产品的制造,而其他产品的设计师和建造者会有不同的制造顺序和建造工艺,所以还需要将建造者和指导者角色抽象出来,基于以上考虑,建造者模式应运而生。

综上,在以下情况下使用建造者模式:

    1. 有许多的零件类要通过一种必须的顺序构成一个产品类,就应该使用建造者模式,这时可以有也可以没有指导者角色

    2. 如果这些零件要组成的产品类不止一个,需要指导者角色

    3. 如果产品类不止一类,则需要抽象指导者角色,构造多个指导者角色的实体类

    模式图解

Pic53

从设计模式书中直接拿过来的图解,讲的很明白。

Director即指导者,Builder即建造者,Product即产品。其中Director根据不同的产品对不同的Builder顺序下达指令,Builder内部按照Director指令进行Product的建造。