软件设计模式的非软件例子.docVIP

  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文档。上传文档
查看更多
软件设计模式的非软件例子

软件设计模式的非软件例子 软件设计模式来源于 Christopher Alexander的建筑学模式和对象运动。根据Alexander的观点,模式就是一个对于特定的系统的通用解决方案本身的重复。对象运动关注于将现实世界模化为软件内部的关系。基于这两个原因,软件设计模式对于真实世界的物体而言同样应当是可以重复的。这篇文章呈现了现实的世界中的非软件的模式实例,这些模式来源于《设计模式—可复用面向对象软件的基础》(Design ?Patterns ?- ?Elements ?of ?Reusable Object-OrientedSoftware)[13]一书。这篇文章也举例讨论了模式语言对非软件的表现力和设计模式的练习。 ?简介 ??? 在软件行业中,模式支持者的团体正在扩大。模式发展的起源可以在建筑师Christopher ?Alexander的著作中找到,他认为模式是世界上特定系统的通用解决方案。他描述的模式可以在日常的建筑物中观察到。《模式语言》(A PatternLanguage)[2]中的每个模式都包含了一张该模式原始范例的图片。 ? ??? 虽然物质是主流世界的观点,而模式为软件世界所信奉,模式也有其体现事物发展的根源[9]。不幸的是软件设计模式的例子不象Alexander模式那么丰富,因为软件设计表现的是精致的构思而不是那些最初产生的想法[13]。当今大多数软件的专有性限制了我们接触一流设计的机会。 ??? 根据Alexander 的说法,现实世界中模式总是重复自己,因为在一个特定的环境下,它们总是很好地适应现有的环境因素[1]。在软件中,要么现实世界的问题被完全地模式化,要么现实世界的物体被转换成为硬件和软件,用来产生现实世界的结果[5]。既然软件设计模式根源于 ?Alexander ?的样式和对象,那么在现实世界中找到软件设计模式也是很正常的。这并不是说软件设计模式是现实世界事物的必然模型,而是说在契合的对象之间相互影响的关系可以在“现实世界”和软件对象中同样地观察到。为了验证这个假设,我们将为每一种设计模式找出一个现实世界的例子来。这些例子在下面的第二节至第四节列出。 ?创建型模式--与对象的创建有关 ??? 作者(指《设计模式》的作者—译注,下同)总结了五种创建型模式。创建型模式的例子可以在制造业,快餐,生物和行政机构中找到。 ?抽象工厂(Abstract Factory)举例 ?? 抽象工厂的目的是要提供一个创建一系列相关或相互依赖对象的接口,而不需要指定它们具体的类。这种模式可以在日本汽车制造厂所使用的金属冲压设备中找到。这种冲压设备可以制造汽车车身部件。同样的机械用于冲压不同的车型的右边车门、左边车门、右前挡泥板、左前挡泥板和引擎罩等等。通过使用转轮来改变冲压盘,这个机械产生的具体类可以在三分钟内改变[16]。 ? ?图 1:抽象工厂的冲压例子 工厂方法(FactoryMethod)举例 ? ? 工厂方法定义一个用于创建对象的接口,但是让子类决定实例化哪个类。压注成型演 ? 示了这种模式。塑料玩具制造商加工塑料粉,将塑料注入到希望形状的模具中[15]。玩 ? 具的类别(车,人物等等)是由模具决定的。(有关抽象工厂与工厂方法我的那篇 HeadFirst采访“工厂方法”和“抽象工厂”也有些信息可参考) ? ?图 2:使用注入成型为例子的工厂方法的对象图 ? ?生成器(Builder)举例 ????? 生成器模式将复杂对象的构建与对象的表现分离开来,这样使得同样的构建过程可以创建出不同的表现。这种模式用于快餐店制作儿童餐。典型的儿童餐包括一个主食,一个辅食,一杯饮料和一个玩具(例如汉堡、炸鸡、可乐和玩具车)。这些在不同的儿童餐中可以是不同的,但是组合成儿童餐的过程是相同的。无论顾客点的是汉堡,三名治还是鸡肉,过程都是一样的。柜台的员工直接把主食,辅食和玩具放在一起。这些是放在一个袋子中的。饮料被倒入杯中,放在袋子外边。这些过程在相互竞争的餐馆中是同样的。 ? ? 图 3:使用儿童餐作为例子的生成器模式的对象作用表 ? ? ?原型(Prototype)举例 ? 原型模式使用原型实例指定创建对象的种类。新产品的原型通常是先于全部产品建立的,这样的原型是被动的,并不参与复制它自己。一个细胞的有丝分裂,产生两个同样的细胞,是一个扮演主动角色复制自己原型的例子,这演示了原型模式。一个细胞分裂,产生两个同样基因型的细胞。换句话说,细胞克隆了自己。 ? ? 图 4:使用细胞分裂例子的原型模式对象图 ? ?单例(Singleton)举例 ???? 单例模式确保一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式是模仿单集命名的,单集的定义是每个集合仅含有一个元素。美国总统的职位是单例,美国宪法规定了总统

文档评论(0)

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

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

1亿VIP精品文档

相关文档