转载请保留出处,尊重他人劳动。
引子:
模式的定义,似乎都如出一辙但又似乎都略有不同,这些由于关注点的不同导致的不同点让事情变得有点复杂了。
简史:
何谓设计模式?任何一本讲解软件设计模式的书籍都会首先问出这个问题。而大部分又都会给出一个(或若干个)传说中软件设计模式起源的定义:
“每个模式就是一条由三部分组成的规则,它表示了一个特定环境、一个问题和一个解决方案之间的关系。
…
简单地说,模式是一个出现在世界上的实物,同时也是一条规则,告诉你应该如何创建一个实物、应该在何时创建。它既是过程,也是实物;既是对当前实物的描述,也是对创建实物的过程的描述。” ——《建筑的永恒之道》
“对于反复出现设计问题的抽象解决方案” ——《建筑模式语言》
之后,这些概念在不同的软件设计模式的书籍中不断被本地化:
在Gof(Gang of four)的《Design Pattern》中模式被定义成三段值: 模式就是表示特定情境、问题、与方案之间的关系。
在《J2EE core Patterns》一书种的定义:模式是用来描述所交流的问题及其解决方案。
《面向模式的软件体系结构》的结论:一个软件体系结构的模式描述了一个出现特定设计语境中的特殊的再现设计问题,并为她的解决方案提供了一个经过充分验证的通用图式。解决方案图式通过描述其组成组件、他们的责任和相互关系以及它们的协作方式来具体指定。
当然在一些其他书籍中也有相关论述:模式就是“范例”;就是同时考虑一对问题,求解方案的“专家行为”等等……
<o:p> </o:p>
观点:
这些观点和概念,似乎都如出一辙但又似乎都略有不同,这些由于关注点的不同导致的不同点让事情变得有点复杂了。我在浏览这些书籍的时候,一直在想是不是应该自己归纳一下自己的理解呢?OK,让我自己动手做做看。
定义:
广义上讲:模式就是一个环境中,一个反复出现的典型问题与这个问题的以经过论证的解决方案,以及它们三者紧密关系的整体的抽象描述。<o:p></o:p>
为了便于记忆,用序列可以表示为:
环境:出现问题以及其解决方案的场景。
问题:环境中可以被一个解决方案覆盖的一个反复出现的典型问题。
解决方案:已经被证实可以在语境中解决一个典型问题的策略与方法。
关系:以上已经提到的三点的紧密地关联性。
模式:以上四点的整体的抽象描述。
<o:p> </o:p>
这样软件设计模式应该就已经一目了然了:
软件设计模式就是指:在软件领域这个大环境下的解决软件设计问题的模式(广义模式)。
为了便于记忆,用序列可以表示为:
环境具化:软件设计领域
问题具化:软件设计的问题
软件设计模式:有以上两点具化的模式(广义模式)。
<o:p> </o:p>
Haha 现在这样的定义描述就比较清晰了。
<o:p> </o:p>
特点:<o:p></o:p>
在前面的定义中已经能够看到许多模式的特性了,比如:整体的抽象性,问题的反复性,解决方案的以论证性,关系的紧密性等等。其实,模式还有若干隐含的特性。
归纳性:模式其实是对经过充分考验的经验,是提炼过后的一种可复用的知识。它与经验论、循证主义、同属于人类最基本的认知手段归纳法的产物。
动、静性:模式本身既描述一个抽象后的物件,也描述一个抽象过程。
与定义一样软件设计模式同样继承了这些特性。
分享到:
相关推荐
《软件秘笈:设计模式那点事》郑阿奇(编者) -电子工业出版社 在第1章软件设计模式概述后,从第2章到第24章诠释23个软件设计模式。 1 设计模式概述 1.1 计算机软件的发展现状 1.2 引入设计模式的必要性 1.3 软件...
零设计研究 Java23种设计模式学习记录最不像设计模式的:工厂模式,抽象工厂模式,模版模式。这几个其实就是继承和...com.zero.headfirst是抽出常用的设计模式,并且参考headfirst归纳总结的设计模式,持续更新。 设计
主要介绍了C#设计模式之单例模式实例讲解,本文讲解了单例模式的定义、单例模式的优缺点,需要的朋友可以参考下
设计模式 设计模式(Design pattern)是一组被反复使用,多数人知晓的,通过分类编目的,代码设计经验的总结。 设计模式分为三种类型,共23种: 创建型模式: ,, ,,。 结构型模式: ,, ,,,,。 行为类型...
模式有不同的领域,建筑领域有建筑模式,软件设计领域也有设计模式。当一个领域逐渐成熟的时候,自然会出现很多模式。 什么是框架? 框架,即framework。其实就是某种应用的半成品,就是一组组件,供你选用完成你...
通过文档对象模型(DOM)解析以及检索、抽取、映射等规则的定义,设计并实现了一种具有规则归纳能力的信息抽取系统,用于Web信息的自动检索。在用于抽取规则归纳的框架下,还重点对用于生成抽取模式的WHISK学习算法...
:question_mark:什么是设计模式 定义:代码设计中常见的问题的解决方案的总结 来源:这个术语是由埃里希·伽玛(Erich Gamma)等人在1990年代从建筑设计领域到计算机科学的,用作对常见建筑设计的归纳。 可是在学习...
8 保证信息模型转化成数据库的逻辑结构(数据库模式) 概念设计的依据及过程 依据:数据库概念设计以需求分析的结果为依据,即需求说明书,DFD图以及在需求阶段收集到的应⽤领域中的各类报表 结果:概念设计的结果是...
26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...
26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...
利用自定义属性,定义枚举值的详细文本 Web标准和ASP.NET - 第一部分 XHTML介绍 在ASP.NET页面中推荐使用覆写(Override)而不是事件处理(Event Handler) 常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试...
设计模式 简介 设计模式(design pattern)是一套被反复使用,多数人知道的,经过分类编目的,代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被别人理解,保证代解码可靠毫无疑问,设计模式于己于...
26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...
26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...
26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...
26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...
26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...
26.2 一些GRASP原则是对其他设计模式的归纳 26.3 设计中发现的“分析”:领域模型 26.4 工厂(Factory) 26.5 单实例类(GoF) 26.6 具有不同接口的外部服务问题的结论 26.7 策略(GoF) 26.8 组合(GoF)和...