- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设计模式(3-2 )
创建型设计模式
湖北汽车工业学院计算机工程系
主要内容
1.建造者模式(了解)
2.原型模式(了解)
3.创建型模式小结(重点)
、建造者模式(Builder Pattern )
4.1、背景
背景1:对象有一些重要的属性,在没有给这
些属性赋值之前,对象不能作为一个完整的
产品使用。如一个电子邮件,有发件人地址
、收件人地址、主题、内容、附录等部分,
而在最起码的收件人地址未被赋值之前,这
个电子邮件不能发出。
背景2:对象的一些属性必须按照某个顺序赋
值才有意义。在某个属性没有被赋值之前,
另一个属性无法被赋值。即属性本身的建造
涉及到复杂的商业逻辑。
如果把对象看作一个有待建造的产品,则对象的属性就
相当 产品的零件,建造产品的过程就是组合零件的
过程。
- 如果组合零件的过程很复杂,则零件”的组合过程可以
被 外部化”到一个称作建造者的对象里,建造者返还给
客户端的是一个全部零件都建造完毕的产品对象。
在软件系统中:
- 有时候面临着一个复杂对象”的创建工作,该对象通常
由各个部分的子对象用一定的算法构成;由 需求的变
化,复杂对象的各个部分经常面临着剧烈的变化,但是
将它们组合在一起的算法却相对稳定。如何应对这种变
化?
§ 提供一种封装机制”来隔离出复杂对象的各个部分”的变
化,从而保持系统中的稳定构建算法”不随着需求改变而
改变?
4.2、Builder模式的结构
4.3、角色
建造者 (Builder ):
-指定一个共同接口,用以创建一个Product对象的各个组成
成分。
具体建造者 (Concrete Builder ):
- 实现Builder角色提供的接口,以构造和装配该产品的各个
部件;
-定义并追踪它所创建的对象;
-提供访问所创建对象的方法。
指挥者 (Director ):
-调用建造者接口以创建产品对象。
产品 (Product ):
- 表 被构造的复杂对象。
- 具体创建者创建该产品的内部表 ,并定义它
的装配过程。
- Product包含定义组成部件的类,也定义将这些
部件装配成最终产品的接口。
指挥者处 与客户端打交道的角色。指挥者角色将客
户端创建产品的请求划分为对各个零件的建造请求
,再将这些请求委派给具体建造者角色。具体建造
者角色是做具体建造工作的,但却不为客户端所知
。
4.3、意图
- 将一个复杂对象的构建与其表 相分离,使得
同样的构建过程可以创建对象的不同表 。
4.4、适用性
- 需要生成的产品对象有复杂的内部结构。
- 需要生成的产品对象的属性相互依赖。
- 在对象创建过程中会使用到系统中的一些其它
对象,这些对象在产品对象的创建过程中不易
得到。
4.6、协作
§ 客户创建Director对象,并用所想要的
Builder对象对其进行配置。
§ 产品各部件生成后Director会通知Builder
。
§ Builder处理Director的请求,并将部件添
加到产品中。
§ 客户从Builder中检索产品。
4.7、活动序列
例如:建造一间小屋以供出租。建房的顺
序是先砌墙,再盖屋顶,最后安装门。
4.8、KFC
快餐店制作儿童餐。
-典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具 (
例如汉堡 炸鸡 可乐和玩具车)。
- 这些在不同的儿童餐中可以是不同的,但是组合成儿童餐的过程
是相同的。柜台的员工直接把主食,辅食和玩具放在一起。这些
是放在一个袋子中的。饮料被倒入杯中,放在袋子外边。
客户端:顾客。想去买一套套餐 (这里面包括
汉堡,可乐,薯条),可以有1号和2号两种
套餐供顾客选择。
指导者角色:收银员。知道顾客想要买什么样
的套餐,并告诉餐馆员工去准备套餐。
建造者角色:餐馆员工。按照收银员的要求去
准备具体的套餐,分别放入汉堡,可乐,薯
条等。
产品角色:最后的套餐,所有的东西
文档评论(0)