第1章 设计模式概述

《第1章 设计模式概述》由会员分享,可在线阅读,更多相关《第1章 设计模式概述(25页珍藏版)》请在文档大全上搜索。
1、常文萃常文萃*设计模式的诞生与发展设计模式的诞生与发展 *设计模式的定义与分类设计模式的定义与分类 *GoF设计模式简介设计模式简介 *设计模式的优点设计模式的优点 *模式的诞生与定义模式的诞生与定义 *模式起源于建筑业而非软件业模式起源于建筑业而非软件业*模式模式(Pattern)(Pattern)之父之父美国加利佛尼亚大学环境结构中心研究所所美国加利佛尼亚大学环境结构中心研究所所长长Christopher AlexanderChristopher Alexander博士博士*A Pattern Language: Towns, Buildings, ConstructionA Patter
2、n Language: Towns, Buildings, Construction253253个建筑和城市规划模式个建筑和城市规划模式Christopher Alexanderw 模式的诞生与定义模式的诞生与定义 AlexanderAlexander给出了关于模式的经典定义:每个模式给出了关于模式的经典定义:每个模式都描述了一个都描述了一个在我们的环境中不断出现的问题在我们的环境中不断出现的问题,然后描述了该问题的然后描述了该问题的解决方案解决方案的核心,通过这种的核心,通过这种方式,我们可以无数次地重用那些已有的解决方方式,我们可以无数次地重用那些已有的解决方案,无需再重复相同的工作。案,
3、无需再重复相同的工作。 w 软件模式软件模式 19901990年,软件工程界开始关注年,软件工程界开始关注Christopher AlexanderChristopher Alexander等等在建在建筑与城市规划领域的重大突破,最早将该模式的思想引入软筑与城市规划领域的重大突破,最早将该模式的思想引入软件工程方法学的是件工程方法学的是1991-19921991-1992年以年以“四人组四人组( (Erich Erich Gamma, Gamma, Richard Helm, Ralph JohnsonRichard Helm, Ralph Johnson和和John John Vlissid
4、esVlissides)”)”自称的自称的四位著名软件工程学者,他们在四位著名软件工程学者,他们在19941994年归纳发表了年归纳发表了2323种在软种在软件开发中使用频率较高的设计模式,旨在件开发中使用频率较高的设计模式,旨在用模式来统一沟通用模式来统一沟通面向对象方法在分析、设计和实现间的鸿沟面向对象方法在分析、设计和实现间的鸿沟。Erich Gamma苏黎世大学计算机科学博士,是苏黎世大学计算机科学博士,是Eclipse、 JUnit 等项目主要技术负责人之一。等项目主要技术负责人之一。John Vlissides斯坦福大学计算机科学博士,斯坦福大学计算机科学博士,原原IBM研究员,于
5、研究员,于2005年年11月月24日因脑瘤日因脑瘤去世,享年去世,享年44岁。岁。Ralph Johnson 墨尔本大学计算机科学博士,原墨尔本大学计算机科学博士,原IBM 研究研究员,现在波士顿顾问集团供职。员,现在波士顿顾问集团供职。Richard Helm康奈尔大学计算机科学博士,康奈尔大学计算机科学博士,伊利诺伊大学教授。伊利诺伊大学教授。软件模式软件模式 软件模式是将模式的一般概念应用于软件开发领域,即软件模式是将模式的一般概念应用于软件开发领域,即软件软件开发的总体指导思路或参照样板开发的总体指导思路或参照样板。软件模式并非仅限于设计。软件模式并非仅限于设计模式,还包括架构模式、分
6、析模式和过程模式等。实际上,模式,还包括架构模式、分析模式和过程模式等。实际上,在软件生存期的每一个阶段都存在着一些被认同的模式在软件生存期的每一个阶段都存在着一些被认同的模式。 软件模式可以认为是软件模式可以认为是对软件开发这一特定对软件开发这一特定“问题问题”的的“解法解法”的某种统一表示的某种统一表示,它和,它和AlexanderAlexander所描述的模式定义完全相所描述的模式定义完全相同,即同,即软件模式等于一定条件下的出现的问题以及解法软件模式等于一定条件下的出现的问题以及解法。 设计模式的发展设计模式的发展 19871987年年,Kent BeckKent Beck和和Ward
7、 CunninghamWard Cunningham借鉴借鉴AlexanderAlexander的模式思想在程的模式思想在程序开发中开始应用一些模式序开发中开始应用一些模式 ,在,在OOPSLAOOPSLA会议上发表了他们的成果。会议上发表了他们的成果。19901990年年,OOPSLAOOPSLA与与ECOOPECOOP联合举办,联合举办,Erich GammaErich Gamma和和Richard HelmRichard Helm等人等人开始讨论有关模式的话题开始讨论有关模式的话题(Bruce Anderson(Bruce Anderson主持主持) ),“四人组四人组” ” 正式成正式
8、成立,并开始着手进行设计模式的分类整理工作。立,并开始着手进行设计模式的分类整理工作。 1991 1991 年年,OOPSLAOOPSLA,Bruce AndersonBruce Anderson主持了首次针对设计模式的研讨主持了首次针对设计模式的研讨会会 。1992 1992 年年,OOPSLA OOPSLA ,AndersonAnderson再度主持研讨会,模式已经逐渐成为人再度主持研讨会,模式已经逐渐成为人们讨论的话题。们讨论的话题。 *设计模式的发展设计模式的发展 *19931993年,年,Kent Beck Kent Beck 和和 Grady Grady BoochBooch 赞助
9、了第一次关于设计模式的赞助了第一次关于设计模式的会议,这个设计模式研究组织发展成为著名的会议,这个设计模式研究组织发展成为著名的Hillside GroupHillside Group研究研究组。组。*19941994 年,由年,由Hillside GroupHillside Group发起,在美发起,在美国召国召开了第开了第1 1届关于面向对届关于面向对象模式的世界性会象模式的世界性会议议编编程语言模式会程语言模式会议。议。*19951995年年,“四人组四人组”出版了出版了设计模式:可复用面向对象软件的基设计模式:可复用面向对象软件的基础础( (Design Patterns: Eleme
10、nts of Reusable Object-Oriented Design Patterns: Elements of Reusable Object-Oriented SoftwareSoftware) )一书,本书成为一书,本书成为19951995年最抢手的面向对象书籍,也成为设年最抢手的面向对象书籍,也成为设计模式的经典书籍。计模式的经典书籍。 *设计模式的发展设计模式的发展 *从从19951995年至今,设计模式在软件开发中得以广泛应用,在年至今,设计模式在软件开发中得以广泛应用,在SunSun的的Java Java SE/Java EESE/Java EE平台平台和和Microso
11、ftMicrosoft的的平台平台设计中就应用了大量的设计设计中就应用了大量的设计模式。模式。*诞生了越来越多的与设计模式相关的书籍和网站,设计模式也作为诞生了越来越多的与设计模式相关的书籍和网站,设计模式也作为一门独立的课程或作为软件体系结构等课程的重要组成部分出现在一门独立的课程或作为软件体系结构等课程的重要组成部分出现在国内外研究生和大学教育的课堂上。国内外研究生和大学教育的课堂上。*设计模式的定义设计模式的定义 *设计模式设计模式(Design Pattern)(Design Pattern)是一套是一套被反复使用、多数人知晓的、被反复使用、多数人知晓的、经过分类编目的、代码设计经验的