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

推荐订阅源

Google DeepMind News
Google DeepMind News
Stack Overflow Blog
Stack Overflow Blog
Hugging Face - Blog
Hugging Face - Blog
博客园_首页
T
The Blog of Author Tim Ferriss
博客园 - 叶小钗
N
Netflix TechBlog - Medium
腾讯CDC
C
Check Point Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
S
SegmentFault 最新的问题
F
Fortinet All Blogs
美团技术团队
U
Unit 42
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园 - 司徒正美
F
Full Disclosure
Recorded Future
Recorded Future
D
DataBreaches.Net
博客园 - 【当耐特】
Martin Fowler
Martin Fowler
J
Java Code Geeks
I
InfoQ
Y
Y Combinator Blog
A
About on SuperTechFans
AI
AI
爱范儿
爱范儿
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Forbes - Security
Forbes - Security
W
WeLiveSecurity
M
MIT News - Artificial intelligence
雷峰网
雷峰网
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Simon Willison's Weblog
Simon Willison's Weblog
Schneier on Security
Schneier on Security
The GitHub Blog
The GitHub Blog
Security Archives - TechRepublic
Security Archives - TechRepublic
aimingoo的专栏
aimingoo的专栏
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
G
GRAHAM CLULEY
Know Your Adversary
Know Your Adversary
Latest news
Latest news
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
D
Docker
Recent Commits to openclaw:main
Recent Commits to openclaw:main
量子位
V2EX - 技术
V2EX - 技术
Project Zero
Project Zero

博客园 - 心雨无痕

升级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的建造。