转载请保留出处,尊重他人劳动。
引子:
模式的定义,似乎都如出一辙但又似乎都略有不同,这些由于关注点的不同导致的不同点让事情变得有点复杂了。
简史:
何谓设计模式?任何一本讲解软件设计模式的书籍都会首先问出这个问题。而大部分又都会给出一个(或若干个)传说中软件设计模式起源的定义:
“每个模式就是一条由三部分组成的规则,它表示了一个特定环境、一个问题和一个解决方案之间的关系。
…
简单地说,模式是一个出现在世界上的实物,同时也是一条规则,告诉你应该如何创建一个实物、应该在何时创建。它既是过程,也是实物;既是对当前实物的描述,也是对创建实物的过程的描述。” ——《建筑的永恒之道》
“对于反复出现设计问题的抽象解决方案” ——《建筑模式语言》
之后,这些概念在不同的软件设计模式的书籍中不断被本地化:
在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>
在前面的定义中已经能够看到许多模式的特性了,比如:整体的抽象性,问题的反复性,解决方案的以论证性,关系的紧密性等等。其实,模式还有若干隐含的特性。
归纳性:模式其实是对经过充分考验的经验,是提炼过后的一种可复用的知识。它与经验论、循证主义、同属于人类最基本的认知手段归纳法的产物。
动、静性:模式本身既描述一个抽象后的物件,也描述一个抽象过程。
与定义一样软件设计模式同样继承了这些特性。
分享到:
相关推荐
### Java 23种设计模式全归纳 #### 资源概述 本资源包汇总了Java中23种经典设计模式的详细介绍和使用示例,旨在帮助开发者系统性地学习和掌握设计模式在软件开发中的应用。这些设计模式分为三大类:创建型模式、...
【Android 设计模式归纳】 设计模式是软件开发中的一种最佳实践,它们是为了解决特定问题而形成的一系列经过验证的解决方案。在Android开发中,设计模式尤其重要,因为它们帮助我们创建可维护、可扩展和高效的应用...
设计模式是软件开发中的一种最佳实践,它是在特定上下文中解决常见问题的模板。Java的23种设计模式被广泛应用于提高代码可读性、可维护性和可复用性,它们分为三大类:创建型模式、结构型模式和行为型模式。 1. **...
本资源包含了对23种经典设计模式的归纳,这些模式被广泛应用于构建可扩展、灵活且易于维护的Java应用程序。源码的提供使得学习者能够更直观地理解这些模式的实际应用。 1. **单例模式**:保证一个类只有一个实例,...
这种模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 ### 10. 迪米特法则 迪米特法则(D) 也称为最少知识原则或“不要和陌生人说话”。这一原则建议...
抽象工厂模式是设计模式中的一种,属于创建型模式,它的主要目的是为了解决在软件系统中,面对一系列相互依赖的对象的创建问题。这种模式提供了一个创建一系列相关或相互依赖对象的接口,而不必指定它们的具体类。...
C++设计模式基础教程.pdf 本资源摘要信息涵盖了C++设计模式基础...学习设计模式需要积累案例,大量背类图,多思考、多梳理、归纳总结,尊重事物的认知规律,注意事物临界点的突破。不可急躁,需要不断的追求和实践。
设计模式是软件开发中一套被广泛认可和应用的最佳实践,它们提供了在特定场景下解决常见问题的通用解决方案。设计模式的分类主要依据它们在软件设计中的作用,分为创建型、行为型和结构型三种类型。 创建型设计模式...
《软件秘笈:设计模式那点事》郑阿奇(编者) -电子工业出版社 在第1章软件设计模式概述后,从第2章到第24章诠释23个软件设计模式。 1 设计模式概述 1.1 计算机软件的发展现状 1.2 引入设计模式的必要性 1.3 软件...
这本书被誉为设计模式的经典之作,它归纳了23种在软件设计中常见的模式,旨在解决面向对象设计中的常见问题,提高代码的重用性、灵活性和可维护性。 设计模式并非具体的代码或库,而是描述在特定场景下如何解决常见...
随着面向对象编程语言的普及,越来越多的设计模式被发掘和归纳出来,形成了一个丰富的设计模式库。 #### 七、总结 设计模式是软件开发领域不可或缺的一部分。它们不仅帮助开发者解决了常见的设计问题,还促进了代码...
### C/C++设计模式基础教程知识点详述 #### 一、设计模式概述 设计模式是一种在软件工程领域中被广泛采用的概念,它旨在提供一种通用的解决方案,用于解决常见的编程问题。通过学习和掌握设计模式,程序员能够编写...
本文介绍了一种归纳方法,旨在帮助从业者从现有的面向对象系统中发现设计模式,并提供了一系列明确的操作规程,以确保该方法的可重复性和实用性。 #### 方法背景与目标 面向对象设计模式作为一种重要的软件工程...
零设计研究 Java23种设计模式学习记录最不像设计模式的:工厂模式,抽象工厂模式,模版模式。这几个其实就是继承和...com.zero.headfirst是抽出常用的设计模式,并且参考headfirst归纳总结的设计模式,持续更新。 设计
此外,文件中也提到学习设计模式的方法,比如对于初学者来说,积累案例比背诵类图更为重要,对于开发者,建议多思考和归纳总结,并且在学习设计模式时不应浮躁,需要在适当的开发环境中寻找合适的设计模式去解决问题...
设计模式的概念最早由文献引入软件开发领域,通过分类和编目,归纳出了23种设计模式。 软件设计模式在面向对象程序设计教学中扮演着重要角色。将其引入教学过程能够帮助学生更深入地理解面向对象思想,掌握面向对象...
“四人组”归纳的23种设计模式被分为三种类型: 1. **创建型模式**:涉及实例化机制的模式,帮助系统独立于如何创建、组合和表示对象。 2. **结构型模式**:关注类和对象的组合方式,封装更复杂的结构。 3. **行为...
学习设计模式的过程应是循序渐进的,需要不断地归纳总结和反思,才能够逐步提升对设计模式的理解深度,并将其有效地应用在实际开发工作中。 综上所述,CC++与设计模式基础课程-讲义为初学者提供了一个全面而系统的...