1 / 39
文档名称:

软件设计模式.ppt

格式:ppt   大小:166KB   页数:39页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式.ppt

上传人:橘子 2022/5/17 文件大小:166 KB

下载得到文件列表

软件设计模式.ppt

文档介绍

文档介绍:软件设计模式
黄洪
******@
**********
学****面向对象设计中前人最有价值的经验总结---设计模式。以便重用优秀、简单的、经过验证的问题解决方案。
设计模式实际上讨论的是在解决面向对象设计的元素组合(类或对象组合)来解决这个问题。
效果(consequences)
描述了模式应用的效果及使用模式应权衡的问题。
描述设计模式
用统一的格式描述设计模式,对一个模式的描述包括以下部分:
模式名和分类
意图:设计模式是做什么的?它的基本原理和意图是什么?它解决的是什么样的特定设计问题?
动机:用以说明一个设计问题以及如何用模式中的类、对象来解决该问题的特定情景。该情景会帮助你理解随后对模式更抽象的描述。
适用性:什么情况下可以使用该设计模式?该模式可用来改进哪些不良设计?你怎样识别这些情况?
结构:采用基于对象建模技术对模式中的类进行图形描述。使用了交互图来说明对象之间的请求序列和协作关系。
描述设计模式(续)
参与者:指设计模式中的类和/或对象以及它们各自的职责。
协作:模式的参与者怎样协作以实现它们的职责。
效果:模式怎样支持它的目标?使用模式的效果和所需做的权衡取舍?系统结构的哪些方面可以独立改变?
实现:实现模式时需要知道的一些提示、技术要点及应避免的缺陷,以及是否存在某些特定于实现语言的问题。
代码示例:用来说明怎样用Java实现该模式的代码片段。
已知应用:实际系统中发现的模式的例子。
相关模式:与这个模式紧密相关的模式有哪些?其间重要的不同之处是什么?这个模式应与哪些其他模式一起使用?
设计模式的编目
Abstract Factory( 3 . 1 ):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
A d a p t er ( 4 . 1 ):将一个类的接口转换成客户希望的另外一个接口。A d a p t e r模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。
B r i d g e( 4 . 2 ):将抽象部分与它的实现部分分离,使它们都可以独立地变化。
B u i l d e r( 3 . 2 ):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
Chain of Responsibility( 5 . 1 ):为解除请求的发送者和接收者之间耦合,而使多个对象都
有机会处理这个请求。将这些对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它。
GoF(Gang of Four)
Erich Gamma
Richard Helm
Ralph Johnson
John Vlissides
1994合著 Design Patterns Elements of Reusable Object-Oriented Software
设计模式的编目
C o m m a n d( 5 . 2 ):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作。
C o m p o s i t e( 4 . 3 ):将对象组合成树形结构以表示“部分-整体”的层次结构。C o m p o s i t e使得客户对单个对象和复合对象的使用具有一致性。
D e c o r a t o r( 4 . 4 ):动态地给一个对象添加一些额外的职责。就扩展功能而言, D e c o r a t o r模式比生成子类方式更为灵活。
F a c a d e( 4 . 5 ):为子系统中的一组接口提供一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
设计模式的编目
Factory Method( 3 . 3 ):定义一个用于创建对象的接口,让子类决定将哪一个类实例化。Factory Method使一个类的实例化延迟到其子类。
F l y w e i g h t( 4 . 6 ):运用共享技术有效地支持大量细粒度的对象。
I n t e r p r e t e r( 5 . 3 ):给定一个语言, 定义它的文法的一种表示,并定义一个解释器, 该解释器使用该表示来解释语言中的句子。
I t e r a t o r( 5 . 4 ):提供一种方法顺序访问一个聚合对象中各个元素, 而又不需暴露该对象的内部表示。
设计模式的编目
M e d i a t o r( 5 . 5 ):用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。
M e m e n t o( 5 . 6 ):在不破