设计模式概述

1.设计模式的诞生与发展

1.1设计模式的诞生

  模式的定义最早出现在“模式之父”Christopher Alexander的经典著作《建筑的永恒之道》中,Christopher Alexander博士及其研究团队在对住宅和周边环境进行调查研究后发现了一些人们都认同的规律,于是他们把这些规律总结为了253个模式,并从前提条件、目标问题、 解决方案三个方面对每个模式都进行描述。 

                       模式之父Christopher Alexander                               

   而最早将模式的思想引入软件工程方法学的是1991-1992年以“四人组(Gang of Four)”自称的软件工程学者,他们是Erich Gamma, Richard Helm, Ralph Johnson和John Vlissides。他们将模式的概念引入软件工程领域,标志着软件模式的诞生。

1.2设计模式的发展

  1987年,Kent Beck和Ward cunningham借鉴Alexander的模式思想在程序开发中开始应用一些模式,再OOPSLA会议上发表了他们的成果。

  1990年,OOPSLA与ECOOP联合举办,Erich Gamma和Richard Helm等人开始讨论有关模式的话题,“四人组”正式成立,并开始着手设计模式的分类整理问题。

  1991年,OOPSLA,Bruce Andrerson主持了首次针对设计模式的研讨会。

  1992年,OOPSLA,Andrerson再次主持研讨会,模式已经逐渐成为人们讨论的话题。

  1993年,Kent Beck和Grady Booth赞助了第一次关于设计模式的会议,这个设计模式研究组织发展成为著名的Hillside Group研究组。

  1994年,由Hillside Group发起,在美国伊利诺伊州的Allerton Park召开了第一届关于面向对象的世界性会议,名为PLoP(Pattern Languages of Programs,编程语言模式会议),简称PLoP'94。

  1995年,PLoP'95仍在伊利诺伊州的Allerton Park举行,“四人组”出版了《设计模式:可复用面向对象软件的基础》一书,本书成为1995年最抢手面向对象书籍,也成为设计模式的经典书籍。

  从1995年至今,设计模式在软件开发中得以广泛应用,再Sun的Java SE/Java EE平台和Microsoft的.net平台设计中就应用了大量的设计模式。

2.设计模式的定义与分类

2.1设计模式的定义

  设计模式的一般定义如下: 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过 分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人 理解并且保证代码可靠性。

  设计模式一般有如下几个基本按要素:模式名称、问题、目的、解决方案、效果、实例代码和相关设计模式,其中的关键元素包括:模式名称。问题,解决方案,效果四个方面。

 2.2设计模式的分类

  根据目的,可以将设计模式分为创建型,结构型和行为型三种;创建型模式主要用于创建对象,结构型模式主要用于处理类对象组合,行为型模式主要用于描述类或对象怎样交互和怎样分配职责。

  根据范围,即模式主要是用于处理类之间关系还是处理对象之间的关系,可分为类模式和对象模式两种;类模式处理类和子类之间的关系,这些关系通过继承建立,在编译时刻就被确定下来,是属于静态的,对象模式处理对象间的关系,这些关系在运行时刻变化,更具动态性。

范围\目的 创建型 结构型 行为型
类模式 工厂方法模式 (类)适配器模式

解释器模式

模板方法模式

对象模式

抽象工厂模式

建造者模式

原型模式

单例模式

(对象)适配器模式

桥接模式

组合模式

装饰模式

外观模式

享元模式

代理模式

职责链模式

命令模式

迭代器模式

中介者模式

备忘录模式

观察者模式

状态模式

策略模式

访问者模式

3.设计模式的作用

  设计模式是从许多优秀的软件系统中总结出的成功的能够实现可维护性服用的设计方案,使用这些方案将避免我们做一些重复性的工作,而且可以设计出高质量的软件系统。它融合了众多专家的经验,并以一种标准的形式供广大开发人员所用,他提供了一套通用的设计词汇和一种通用的语言以方便开发人员之间的沟通和交流,降低开发人员理解系统的复杂度;也使得人们可以更加简单方便地复用成功的设计和体系结构,设计方案更加灵活易于修改;设计模式的使用将提高软件系统的开发效率和软件质量,且在一定程度上节约设计成本。

 

posted @ 2020-03-11 11:35  kkkyl  阅读(223)  评论(0)    收藏  举报