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

来源:互联网 发布:mysql如何清空数据库 编辑:程序博客网 时间:2024/06/12 22:23

摘要

本文Michael  Duell 著,为Wu译,出自<<非程序员>>
    软件设计模式来源于 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)举例
     单例式确类仅实例供一访它的访问点。 单例模式仿单集,单集的每个含有元素统的单例宪法总统,任继任在任只能现任。无总统为何头衔美利国总”是访问这个职位的人的一个全局的访问点。
 
 
 
5:使用总统例子的单例模式对象图
 


原创粉丝点击