zhjr06-GoF创建型模式-建造者模式.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
zhjr06-GoF创建型模式-建造者模式

计算机学院软件工程系 《设计模式》 GoF-创建型模式 3.1 Simple Factory Pattern(简单工厂模式) 3.2 Factory Method Pattern(工厂方法模式) 3.3 Abstract Factory Pattern(抽象工厂模式) 3.4 Builder Pattern(建造者模式) 3.5 Prototype Pattern(原型模式) 3.6 Singleton Pattern(单例模式) GoF-创建型模式 3.4 Builder Pattern Builder模式的定义: Builder模式用来创建复合对象,并把复合对象的创建过程加以抽象,通过子类继承和重载的方式,动态地创建具有复合属性的对象;另一方面,为了统一创建过程,又把对象创建的操作统一封装在名为Director所提供的方法里。 3.4 Builder Pattern 复合对象的概念: 所谓复合对象,指有别于一般的对象,该对象具有不同的复合属性。比如我们把一辆汽车看成一个复合对象,是因为该汽车由多个复杂的零部件组成,这些零部件可能因为生产厂家的不同等等而不同,但这些不同的零部件最终都能被组装为一辆汽车。这些不同的零部件我们可称之为汽车的复合属性,同样可称该汽车为一个复合对象。 3.4 Builder Pattern 将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 Builder模式和工厂模式一样,都属于对象创建型模式,都用来创建类的对象。但它们存在在本质的区别: 在工厂模式里,我们无需关心产品的各部分是如何被创建的;但在Builder模式里,会把产品的创建过程抽象为多个部分。也就是说,工厂模式被关注的是整个产品,而Builder模式被关注的是产品的组成部分的创建过程。 因为上述关注点的不一样,工厂模式被创建的产品是一个单一产品;Builder模式创建的是一个复合产品。 在抽象工厂样式中,每一次工厂对象被呼叫时都会传回一个完整的产品对象,而使用端有可能会决定把这些产品组装成一个更大的和复杂的产品,也有可能不会。工厂对象是没有状态的,不知道上一次构建的是哪一个产品,也没有未来的概念,不知道下一次构建的是哪一个产品,更不知道自己构建的产品在更高层的产品结构蓝图中是什么位置。 ? ? ? 建造类别则不同,建造样式的重点在导演者角色。导演者对象是有状态的,它知道整体蓝图,知道上一次、这一次和下一次交给建造者角色去构建的零件是什么,以便能够将这些零件组装成为一个更大规模的产品。它一点一点地建造出一个复杂的产品,而这个产品的组装程序就发生在导演者角色内部。建造者样式的使用端拿到的是一个完整的最后产品。 换言之,虽然抽象工厂样式与建造样式都是设计样式,但是抽象工厂样式处在更加具体的尺度上,而建造样式则处于更加宏观的尺度上。一个系统可以由一个建造样式和一个抽象工厂样式组成,使用端通过呼叫这个导演角色,间接地呼叫另一个抽象工厂样式的工厂角色。工厂样式传回不同产品族的零件,而建造者样式则把它们组装起来。 ? ? ? 比如以众神造人为例,女娲利用建造样式负责把灵魂、耳目、手臂等组合成一个完整的人,而黄帝、上骈、桑林各自利用工厂样式创造出灵魂、耳目、臂手等。女娲不必考虑灵魂、耳目、手臂是什么样子、怎么创造出来的,这就成为一个由建造样式和抽象工厂样式组合而成的系统。 ? ? ? 建造样式这个名字不如改为导演样式更能反映出本样式的本质,也更容易与工厂样式区分。实际上,只要向简单工厂样式、工厂方法样式、抽象工厂样式(甚至原型样式)中加入一个通晓整体产品结构的导演者角色,就可以得到某种形式的建造样式---由导演者角色反复呼叫各个工厂对象进行零件建造,然后由导演者角色进行零件组装,形成最后产品。 遇到问题时,我们会有两种处理方式: ? ? 1、哦,这个问题好像可以用抽象工厂解决,试试,好像有点不妥,再试试建造者看,恩,这回行了; ? ? 2、这个问题嘛,当然应该是这样,这样,这样解决它,恩,搞定,咦,怎么竟然和建造者模式一样。 ? ? 学模式主要的是学它的思想,不要拘泥于它的具体形式,不要硬套模式。 有这么一种境界,我想努力达到这种境界:忘掉招式 重庆理工大学 计算机学院软件工程系 第 3 章 GoF-创建型模式 授课:张金荣 Email:zhjr2000@163.com zhjr@ QQ: zhjr@ (即1211460305) 电话第 3 章 第 3 章 Factory Pattern(工

文档评论(0)

wyjy + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档