软件设计模式的非软件例子(一)

摘要

本文Michael  Duell 著,为Wu译,出自<<非程序员>>
    软件设计模式来源于 Christopher Alexander的建筑学模式和对象运根据Alexander的观点模式就是一个定的通用案本重复动关现实化为部的关系。基于两个件设对于界的言同是可复的章呈实的的非件的式实例这些模式用面向对软件的基Design  Patterns  -  Elements  of  Reusable Object-OrientedSoftware[13]一书这篇文章也举例讨论了模式语言对非软件的表现力和设计模式的练习。

 简介
    在软件行业中,模式支持者的团体正在扩模式发展的起源可以在建筑师 Christopher  Alexander 的著作中 找到,他认为模式是世界上特定系统的通用解决方他描述的模式可以在日常的建筑物中观察到 模式语 A
PatternLanguage [2 ] 中的每个模式都包含了一张该模式原始范例的图片。
 
    虽然物质是主流世界的观点而模式为软件世界所信奉模式也有其体现事物发展的根源 [9 ] 不幸的是 设计模式的例子不象 Alexander 模式那么丰富为软件设计表现的是精致的构思而不是那些最初产生的想法 [ 1 3 ] 当今大多数软件的专有性限制了我们接触一流设计的机会。
    根据 Alexander 的说法,现实世界中模式总是重复自己,因为在一个特定的环境下,它们总是很好地适应现 有的环境因素 [1 ] 在软件中要么现实世界的问题被完全地模式化要么现实世界的物体被转换成为硬件和软件, 用来产生现实世界的结果 [5 ] 既然软件设计模式根源于  Alexander   的样式和对象,那么在现实世界中找到软件设 也是常的是说计模实世的必,而契合之间互影 可以实世软件同样察到证这,我每一模式出一 现实世界的例子来 这些例子在下面的第二节至第四节列出。
 创建型模式--与对象的创建有关
    作 (指模式—译同)五种模式。创建型模子可造业,快 餐,生物和行政机构中找到。
 抽象工厂Abstract Factory)举例
   抽 厂的要提创建相关依赖接口需要们具。这种模 在日制造使用的压设找到压设制造身部样的械用 同的右边车门、左边车门、右前、左板和等等。通过使用改变压盘 这个机械产生的具体类可以在三分钟内改变 [16 ]
  软件设计模式的非软件例子(一)_第1张图片
  1 :抽象工厂的冲压例子
工厂方法 FactoryMethod )举例
 
  工 用于象的但是 哪个注成
 
了这。塑料玩 具制造商加工塑料粉,将塑料注 入到希望形状的模具中 [15 ]
 
具的类别(车,人物等等)是由模具决定的。(有关抽象工厂与工厂方法我的那篇
HeadFirst采访“工厂方法”和“抽象工厂”也有些信息可参考

软件设计模式的非软件例子(一)_第2张图片

 
  2 :使用注入成型为例子的工厂方法的对象图
 
  生成器 Builder )举例
      生 模式对象与对现分,这使同样过程建出表现。这 种模式用于快餐店制作儿童典型的儿童餐包括一个主食一个辅食一杯饮料和一个玩(例如汉炸鸡、 可乐和玩具车这些在不同的儿童餐中可以是不同的但是组合成儿童餐的过程是相同无论顾客点的是汉堡, 还是过程样的。柜台的员把主食和在一些是个袋 饮料被倒入杯中,放在袋子外边 这些过程在相互竞争的餐馆中是同样的。
  软件设计模式的非软件例子(一)_第3张图片
 
3 :使用儿童餐作为例子的生成器模式的对象作用表
 
 
  原型 Prototype )举例
  式使实例建对种类的原是先产品,这型是被动 不参它自个细丝分生两的细一个动角自己型的 子,这演示了原型模式 一个细胞分裂,产生两个同样基因型的细胞换句话说,细胞克隆了自己。
  软件设计模式的非软件例子(一)_第4张图片
 
4 :使用细胞分裂例子的原型模式对象图
 
  单例 Singleton )举例
     单例 式确类仅实例供一访它的访问点。 单例模式仿单集,单集的 每个含有元素统的单例宪法总统,任继任 在任只能现任。无总统为何头衔美利国总”是访 问这个职位的人的一个全局的访问点。
 
  软件设计模式的非软件例子(一)_第5张图片
 
5 :使用总统例子的单例模式对象图
 

你可能感兴趣的:(设计模式,c,制造,生物,语言,产品)