uml设计模式

上传人:今*** 文档编号:108345611 上传时间:2019-10-23 格式:PPT 页数:74 大小:1.13MB
返回 下载 相关 举报
uml设计模式_第1页
第1页 / 共74页
uml设计模式_第2页
第2页 / 共74页
uml设计模式_第3页
第3页 / 共74页
uml设计模式_第4页
第4页 / 共74页
uml设计模式_第5页
第5页 / 共74页
点击查看更多>>
资源描述

《uml设计模式》由会员分享,可在线阅读,更多相关《uml设计模式(74页珍藏版)》请在金锄头文库上搜索。

1、面向对象技术 Object-Oriented Techniques,面向对象的设计模式 Object-Oriented Design Patterns,-3-,Review: Object-Oriented Design Principles,LSP:Liskov替换原则 The Liskov Substitution Principle OCP:开放-封闭原则 The Open-Close Principle SRP:单一职责原则 The Single Responsibility Principle ISP:接口隔离原则 The Interface Segregation Principl

2、e DIP:依赖倒置原则 The Dependency Inversion Principle ,-4-,学习线路图,-5-,References,GoF94, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides, Design Patterns: Elements of Reuseable Object-Oriented Software(李英军等译,设计模式可复用面向对象软件的基础,机械工业出版社,2000年) Mart02, Robert C. Martin, Agile Software Development-Princi

3、ples, Patterns, and Practices(邓辉译,敏捷软件开发-原则、模式与实践,清华大学出版社,2003年) Gold01, Brandon Goldfedder, The Joy of Patterns: Using Patterns for Enterprise Development(熊节译,模式的乐趣,清华大学出版社,2003年) Larm01, Craig Larman, Applying UML and Patterns, 2e(姚淑珍、李虎等译,UML和模式应用-面向对象分析与设计导论,机械工业出版社,2002年),-6-,内容安排,从原则到模式 设计模式 G

4、oF设计模式及应用 GRASP职责分配模式 模式与编程语言 模式与重构,-7-,内容安排,从原则到模式 设计模式 GoF设计模式及应用 GRASP职责分配模式 模式与编程语言 模式与重构,-8-,模式?,如何在已排序的值列表中查找一个数组?,1. 将列表一分为二。将要查找的值与中间元素的值相比较。如果相等,就找到我们要查找的值。如过要查找的值小于中间元素的值,将中间点设置为列表的新的顶点(并再次将列表一分为二)。如果要查找的值大于中间元素的值,将中间点设置为列表的新的尾点。然后再将列表一分为二。继续这种分割过程,直到列表不能再分为止。此时,如果要查找的值不再最后两个元素中,它就不在这个列表中。

5、,2. 使用二分查找,-9-,设计?,Maslov:如果你唯一的工具是锤子,你就会把所有的东西都当作钉子!,1.绝大多数开发人员和设计人员都是程序员出身,他们习惯于最熟悉的工具即编写代码的文本编辑器来思考! 2.设计主要是一个交流的活动,而程序员的交流能力通常非常糟糕!,Build for Today, Design for Tomorrow!,-10-,设计模式?,-11-,模式,Pattern A decorative design, as for wallpaper, made up of elements in a regular arrangement A recognizable

6、combination of action, qualities, etc., characteristic of a particular person or population 通用问题的解决方案 来自建筑行业 Christopher Alexander 1977年A Pattern Language,-12-,Concept of Patterns,Each pattern describes a problem which occurs over and over again in our environments, and then describes the core of th

7、e solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. - Christopher Alexander, A Pattern Language, 1977,-13-,模式的形式,模式的一个主要目标就是以一种别人容易接受的方式,捕捉那些重复出现的问题的解决方案 模式的形式: 名称 意图 动机 适用性 结构 参与者 协作 效果 实现,example,-14-,模式简史-1,1964

8、Christopher Alexander出版了Notes on the Synthesis of Form,该书尝试从一个不同的角度来看待建筑的过程 1977 Christopher Alexander出版了A Pattern Language一书 1987 Ward Cunningham和Kent Beck开始将一些建筑学概念应用到使用SmallTalk语言的软件开发中 1992 Jim Coplien出版了Advanced C+:Programming Style and Idioms一书 1992 Peter Coad在ACM上发表了他在分析模式方面的研究成果 1993 Erich G

9、amma的博士论文以及JohnVlissides、Ralph Johnson和Richard Helm的其它研究成果在ECOOP 93上发表 1993 Kent Beck、Grady Booch、Jim Coplien以及其他人组成了Hillside小组,提供一个讨论模式的论坛,-15-,模式简史-2,1994 第一次编程模式语言(Pattern Language of Programming, PLoP)大会举行 1994 Design Patterns: Elements of Reusable Object-Oriented Software出版 1996 Frank Buschmann

10、与其他人合作出版了Pattern-Oriented Software Architecture: A System of Patterns一书 1997 Martin Flower出版了Analysis Patterns: Reusable Object Models一书 1999 Martin Flower与其他人合作出版了Refactoring:Improving the Design of Existing Code一处 ,-16-,内容安排,从原则到模式 设计模式 GoF设计模式及应用 GRASP职责分配模式 模式与编程语言 模式与重构,-17-,设计模式,什么是设计模式? 设计就是解

11、决方案对某个问题的解决 如果某个解决方案对某类问题都很有用 这时就把它总结出来 这就产生了设计模式,-18-,设计模式,是: 优秀的设计范例 从优秀设计方案中发现和总结出来的经验 在实践中反复出现的设计问题的优秀解决方案 设计者相互交流的基本术语:设计语言 培养优秀设计师的一条捷径 不是: 面向对象设计的框架 可供简单组合的设计元件 发明创造出来的创新思路 解决面向对象设计问题的完整方案,-19-,设计模式的基本要素,1. 名称:用于助记,形象表示这个模式 2. 问题:这个模式可以解决什么问题 3. 解决方案:这个模式怎样解决这个问题的步骤与方法 4. 效果:使用这个模式与不使用这个模式有什么

12、区别,它有什么优点和缺点,一个问题可以有多种解法,好的解法都可以找到很多种,每种都有优缺点;所以编程时不要死记方法,应该活学活用,-20-,设计模式的基本思想-1,软件是在不断进化的 需求在不断改变,所以软件应该适应变化 设计模式是为了让软件更加适应变化,有更多的可复用性;就是有变化时你不用从头重写一次这个软件 如何适应变化? 就应该封装变化,让变化的影响最小 封装复杂性,提供简单的接口,-21-,设计模式的基本思想-2,1. 松耦合 2. 针对接口编程,而不是针对实现编程 3. 继承、组合、委托、多态、参数化,-22-,内容安排,原则与模式 设计模式 GoF设计模式及应用 GRASP职责分配

13、模式 模式与编程语言 模式与重构,-23-,经典设计模式:GoF,GoF(Gang of Four) 23种经典设计模式,-24-,GoF模式分类-1,根据模式的目的(用来完成什么工作的) 创建型模式 结构型模式 行为型模式 根据模式的作用范围(是处理类还是处理对象的): 类模式 对象模式,-25-,GoF模式分类-2,创建型模式 创建型类模式将对象的部分创建工作延迟到子类 创建型对象模式将它延迟到另一个对象中 结构型模式 结构型类模式使用继承机制来组合类 结构型对象模式描述了对象间的组装方式 行为型模式 行为型类模式使用继承描述算法与控制法 行为型对象模式则描述一组对象怎样协作完成单个对象无

14、法完成的工作,-26-,GoF设计模式,GoF 23种经典设计模式,-27-,GoF应用-State模式-1,/修改LegoSystem源代码 case BLUE: BlueProcess(); break;,LegoSystem:ProcessColor() switch (color) case RED: RedProcess(); break; case GREEN: GreenProcess(); break; case YELLOW: YellowProcess(); break; ;,-28-,State模式-2,目的:允许一个对象在其内部状态改变时改变其行为 结构 适用性: 一个

15、对象的行为取决于它的状态, 并且它必须在运行时刻根据状态改变它的行为 一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。这个状态通常用一个或多个枚举常量表示 State模式将每一个条件分支放入一个独立的类中;这使得可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化,-29-,State模式-3,-30-,State模式-4,LegoSystem:ProcessColor() Color-Process(); ; CColor public: virtual void Process(); void CRed:Process() RedPro

16、cess(); ; void CGreen:Process() RedProcess(); ; void CYellow:Process() RedProcess(); ;,/仅需要增加新的类, /原有代码不需要任何变动 void CBlue:Process() BlueProcess(); ;,State模式满足OCP,-31-,汉堡店-1,增加奶酪?,加入洋葱?,-32-,汉堡店-2,加入洋葱?,加入西红柿?,-33-,汉堡店-3,加入西红柿?,-34-,汉堡店-4:问题,类爆炸性增长(指数级别:2n) 再增加一种调料(如生菜),则多出8个类 继续增加一种调料(如番茄酱),则多出16个类 破坏单点维护能力 如添加一个简单的getPrice方法,将会受到严重的影响? 实际情况呢? 我们可以把每层调料都看作是在普通汉堡或三明治上附加的装饰物,-35-,GoF: Decorator模式,目的:动态地给一个对象添加一些额外的职责(就增加功能来说,Decorator 模式相比生成子类更为灵活)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号