设计模式03-创建型模式-2.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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)

sdfgrt + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档