第 14章 UML与设计模式
1,为什么要使用设计模式
要真正掌握软件设计,必须研究软件设计大师的成功设计,这些设计中
包含了许多设计模式。
定义,一个设计模式是对某 特定环境 下的 某类问题
的解决方法。
使用设计模式的好处:
? 简化并加快设计。 可使用现成的模板,节省开发时间,有助于提高
软件质量。
? 方便设计者之间的通信。 可更准确地描述问题以及解决问题的解
决方案,使解决方案具有一致性,使代码更易理解。
? 降低风险。 设计模式已被使用,证明是有效的解决方案。
? 有助于转到 OO技术。 设计模式是可重用的设计的经验的总结,在
实际中得到成功应用,成功能够说服开发人员采用新技术。
2,设计模式的历史
提出,70年代后期,一位建筑学教授( 克里斯托夫,亚力山大,
伯克利大学 ),,模式语言, 讨论设计模式建筑设计中的作用。
软件中使用,80年代,有意识地使用,计算机界流行。
总结,80年代后期,Erich Gamma的博士论文对模式进行了分
类整理。
领域,1995年,GoF合著了 〈 Design Patterns,Elements of
Object-Oriented Software〉,设计模式成为了软件工程的重要研
究领域。
GoF:Erich Gamma,Richard Helm,Ralph Johson,John Vlissides
3,设计模式的分类
GoF书中有 23个设计模式,见表 -1。
目的
创建型 结构型 行为型


类 Factory Method工厂方

Adapter适配器 Interpreter解释器
Template Method模板方法


Abstract Factory抽象工

Builder生成器
Prototype原型
Singleton单件
Adapter适配器
Bridge桥接
Composite组成
Decorator装饰
Fa?ade刻面
Flyweight享元
Proxy代理
Chain of Responsibility职
责链
Command命令
Iterateor迭代器
Mediator中介者
Memento备忘录
Observer观察者
State状态
Strategy策略
Visitor访问者
创建型:
抽象了创建对象的过
程,使得系统不依赖
系统中是如何创建、
组合和表示的。
结构型:
主要描述如何组合类和对
象以获得更大的结构。
行为型:
主要描述算法和对象间的职
责分配,主要考虑对象(或
类)之间的通信模式。
4,设计模式实例
1) Fa?ade设计模式(属于对象结构型模式)
该模式定义一个高层接口,为子系统的一组接口提供一个一
致的界面,以降低系统中各部分之间的相互依赖关系。
Q R S
JI K
L
X Y Z
F a c a d e
BA C
D
C l i e n t 类
子系统
4,设计模式实例
1) Fa?ade设计模式(属于对象结构型模式)
该模式定义一个高层接口,为子系统的一组接口提供一个一
致的界面,以降低系统中各部分之间的相互依赖关系。
C l i e n t A
C l i e n t B
C o n n e c t i o n
S t a t e m e n tD a t a b a s e M e t a d a t a
R e s u l t S e t M e t a d a t a
R e s u l t S e t
D a t a b a s e R e c o r d s e t
C l i e n t A _ C l i e n t B _
D a t a b a s e M e t a d a t a _
R e s u l t S e t M e t a d a t a _
C o n n e c t i o n _
S t a t e m e n t _
R e s u l t S e t _
获得更大的结构
4,设计模式实例
对于简单数据库应用,Database,Recordset的功能简单,如连接数据库、执行查询即可。
public class Database {
private Connection con;
public Database(String driver){...}
public void Open(String url,String uid,String pwd){...}
public void Close(){...}
public Recordset SelectQuery(String sql){...}
public int UpdateQuery(String sql){...}
}
public class Recordset {
private ResultSet rs;
private Database db;
public Recordset(ResultSet rs){...}
public void Open(String sql,Database db){...}
public void Close(){...}
public int MoveFirst(){..}
...
public String GetFieldValue(String fieldname){..}
public String GetFieldValue(int fieldindex){..}
...
}
4,设计模式实例
Facade设计模式应用范围:
? 为复杂的子系统提供一个简单的接口;
? 客户类和客户类要使用的类之间存在太多的依赖
关系;
? 要建立具有层次结构的子系统。
4,设计模式实例
2) Abstract Factory设计模式(属于对象创建型模式)
该模式的目的是给用户程序提供一个创建一系列相关或相互
依赖的对象的接口,不需要在客户程序中指定要具体使用哪个
类。 (可在运行时由用户确定 )
工厂生产产品,将对象看作产品,类产生对象,类是产生对
象产品的工厂,叫做类工厂。
在 Java语言中支持一个程序的图形界面元素具有多种显示形
式,或是 Metal,或是 Motif,或是 Windows风格,并且可由用户
配置使用什么样的风格。
4,设计模式实例
2) Abstract Factory设计模式(属于对象创建型模式)
客户通过该抽象类(抽
象工厂)接口来产生界
面元素,每一种元素对
应一个操作。
对界面元素的产生,不同风
格有不同的产生工厂。
每一种元素类型均有一
个抽象类。
一个界面元素,有不同
的具体风格类。
4,设计模式实例
Abstract Factory设计模式应用范围:
? 系统要独立于它的产品的创建、组合和表示;
? 可以对系统进行配置,以便系统可使用系列产品
中的一个;
? 要求一组相关的产品要一起被使用,这是一个需
要强化的约束条件;
? 希望以类库的形式提供产品,而且希望展示这些
产品的接口,而不是实现。
4,设计模式实例
3) Visitor设计模式(属于对象行为型模式)
该模式的目的是:对一个对象中的 各个对象进行操作,以便
在不改变 对象结构中 各个类的前提下增加作用于这些对象的新
操作。
问题:考虑编译分析中的语法树及其结点。编译器进行语法
分析时,要对语法树进行遍历,在遍历过程中对结点进行操作。
特点:
①结点类可有多种类型;如:表示赋值语句、表示变量存取、
表示算术表达式等。
②结点类的集合对特定程序设计语言是固定的。
③遍历语法树时,对不同类型的结点所做的操作可能不一样。
4,设计模式实例
问题:考虑编译分析中的语法树及其结点。编译器进行语法分
析时,要对语法树进行遍历,在遍历过程中对结点进行操作。
4,设计模式实例
问题:考虑编译分析中的语法树及其结点。编译器进行语法分
析时,要对语法树进行遍历,在遍历过程中对结点进行操作。
5,在 Rose中使用设计模式
..,操作,..
设计模式
关于设计模式的参考书:
1、设计模式:可复用面向对象软件的基础
作者:(美) Erich Gamma,Richard Helm 等著
定价,35元 优惠价,28元
书号,7-111-07575-7 译者,类别:计算机理论
出版社:机械工业出版社 出版日期,2005-08-29
责任编辑:周华 版次,1-14
对于从事设计可重用面向对象软件的人员来说,本书是这一
领域中的不可多得的一本好书。全书以丰富的现实实例为基础,
将可重用面向对象的设计模型分为创造类、结构类、行为类三
种进行详述,并提供了 23个具有良好可重用性的设计模型,读者可
以直接做为设计素材使用。本书这个结合实际讲述知识的突出
特点,不仅可以提高使用者的实战能力,而且可以加深他们对面向
对象模型设计的理解。并且这种创造思维的引入,特别有助于提
高在校学生的软件设计能力、拓展设计思路。
设计模式
关于设计模式的参考书:
2,UML 和模式应用(原书第2版)
作者:(美) Craig Larman 著
定价,59元 优惠价,59元
书号,7-111-14518-6 译者,类别:
出版社:机械工业出版社 出版日期,2004-8-18
责任编辑,版次,1-5
本书英文版面世以来,便广受业界专家和读者的好评。全书叙述清晰、
用词精炼,构思巧妙,将面向对象分析设计的概念、过程、方法、原则和个
人的实践建议一一道来,博引多家观点,以实例为证,将软件的分析和设计
的过程叙述得如逻辑推理一般,于细节处见真知。
本书是一本经典的面向对象分析设计技术的入门书,适用范围非常广,
从刚刚入门的初学者,到已经有一定对象技术知识但希望进一步提高开发水
平的中级读者,甚至是资深的专业人员,都可以从本书获益匪浅。同时,本
书也很适合作为高等院校计算机专业及软件学院相关课程的教材和各类培训
班的辅导教材。
设计模式
关于设计模式的参考书:
3,Java 与模式(含光盘)
著者:
作译者:阎宏编著
ISBN号,7-5053-8000-1
出版社:电子工业出版社
出版日期,2002-10
单价,88元
这是一本讲解设计原则以及最为常见的设计模式的实用教材;本书的目
的是要给工作繁忙的 Java系统设计师一个快速而准确的设计原则和设计模式
的辅导。本书分成一系列的章节,每一个章节讲解一个编程模式,说明此模
式的用意、结构、以及这一模式适合于什么样的情况等。每一个章节都附有
多个例子和练习题,研习这些例子、完成这些练习题可以帮助读者更好地理
解所讲的内容。大多数的章节都是相对独立的,读者可以打开本书,从任何
一章开始读起。为了满足不同程度的读者的需要。
设计模式
关于设计模式的参考书:
4,C# 设计模式(含光盘 )
著者, (美)库珀著
作译者:张志华等译
ISBN号, 7-5053-8979-3
出版社:电子工业出版社
出版日期, 2003-08
单价,33元
本书主要介绍如何用最常见的设计模式编写 C#程序。全书分为四个部
分,首先介绍了 C#语言和面向对象程序设计的一般原则,可作为 C#程序设
计的快速入门教程;然后分别讲述了创建型模式、结构型模式和行为型模式。
每一类设计模式又包括若干种具体模式,共有 23种。在介绍每种模式时,给
出了一个或多个应用该模式的示例,以便于理解,且这些示例都是能完全运
行的程序,包含在随书附带的光盘中。此外,每一章还提供了 UML图,用以
说明类之间的关系。
本书适用于计算机及相关专业的本科生和研究生,对于软件开发人员也
是一本很好的参考书。
设计模式
关于设计模式的参考书:
5,.NET与 设计模式
著者,甄镭编著
ISBN号, 7-121-01097-6
出版社:电子工业出版社
出版日期, 2005-06
单价,68元
本书力求将设计模式与实际开发紧密联系起来,具体讲述了哪种模式可
以在哪种现实的应用场景中采用。全书融入了作者多年的开发经验,介绍了
许多现实案例,具有很强的实用性。本书分为 4篇:第 1篇讲述了面向对象设
计的一些基本原则和,NET引入的新概念;第 2篇以 GOF的 23种设计模式为主
线用相当多的实例介绍了每一种设计模式的引入原因、动机、使用环境、结
构及其收益与代价;第 3篇介绍设计模式在 DotNetNuke,NUnit,Ndoc和
Gentle等开放源码中的应用;第 4篇介绍了有关模式的历史,如何发现和书写
模式,以及模式社会的交流场所 PLOP等。
本书适合所有程序员及相关技术开发人员阅读。
设计模式
关于设计模式的参考书:
6、面向模式的软件体系结构 卷1:模式系统
作者:(德) Frank Buschmann 等著
定价,45元 优惠价,36元
书号,7-111-11182-6 译者,类别:程序设计
出版社:机械工业出版社 出版日期,2005-04-07
责任编辑:姚蕾 版次,1-3
本书系统地介绍了模式的概念并讨论了模式描述的原则;给出了来自不同应用
领域的 8个软件体系结构模式;还给出了 8个设计模式,这些模式分别针对在定义了软
件系统的整体结构之后遇到的典型问题;对惯用法模式进行了阐述;论述了将模式组
织成模式系统的重要性;讨论了模式如何嵌入到软件体系结构中,特别是对软件体系
结构及其基本原则的理解。此外,本书还介绍了模式历史、相关工作和整个模式团体,
并对模式的未来发展作了展望。
本书力图做到既是教材又是参考指南,帮助软件开发人员以一种新的方式考虑软
件体系结构,并提供了一些技术来解决特定的再现设计问题,对软件开发的初学者和
专家都有帮助。把本书用作软件工程课程的指南,可以给学生提供大型软件设计的完
整的新观点。把本书用作参考手册,可以提供全面的技术并随查随用。本书包含了涉
及模式实际应用的许多指导原则和约束限制。本书可作为计算机专业高年级本科生、
研究生的软件工程教材或参考书,亦可作为软件开发人员的参考手册。
设计模式
关于设计模式的参考书:
7、面向模式的软件体系结构 卷 2:
用于并发和网络化对象的模式
作者 Douglas Schmidt 等著
定价,59元 优惠价,47.2元
书号,7-111-11686-0 译者,类别:计算机理论
出版社:机械工业出版社 出版日期,2003-09-24
责任编辑:张金梅 版次,1-1
对于软件开发人员来说,设计运行并发和网络化环境中的应用程序和中间件是很
大的挑战。本书中所列出的模式构成了处理有关并发和网络化问题的模式语言的基础。
书中提出了 17种相互关联的模式,它们包含用于构建并发和网络化系统的核心组件:
服务访问和配置、事件处理、同步和并发。在多种程序设计语言 (如 C++,Java和 C)中,
这些 模式有大量的例子和已知应用。
本书可用于解决特定的软件开发问题,读者也可以从头至尾地阅读,学习构建并
发和网络化应用以及中间件的最佳方法。
设计模式
关于设计模式的参考书:
8、面向模式的软件体系结构 卷 3
作者,Michael Kircher
定价,29元 优惠价,23.2元
书号,7-111-11686-0 译者,鲍志云 类别:计算机理论
出版社:机械工业出版社 出版日期,2005-10-08
责任编辑:李云静 版次,1-1
在任何类型的软件中,有效管理资源都是至关重要的。从移动设备中的嵌入式软
件,到大型企业服务器上的软件,有效地管理内存、线程、文件、网络连接之类的资
源对于让系统可以正常且高效地工作都很重要。我们经常在软件开发生命周期的后期
才发现资源管理需求,而在这么晚的时候改变系统设计很困难。所以,在生命周期的
早期执行这样的任务就很重要。因为属于不同领域的系统有不同的约束和需求,所以
对某个特定系统或者配置很有效的方法对另一个系统就未必那么有效。本书用模式来
描述在系统中有效实现资源管理的方法。这些模式描述得很详细,使用了几个例子,
并且和 POSA前两卷一样,给出了如何实现它们的指导。此外,这一卷还对资源管理
做了透彻的介绍,并给出了两个案例研究,分别把这些模式应用于自组网络计算和移
动射频网络。这些模式归于不同的资源管理领域,涉及了完整的资源生命周期:获取、
管理和释放。本书适合软件构架师、设计者和开发者阅读,也可供计算机专业的学生
参考。