2012-2013第二学期11本UML第十四章UML模式设计.ppt_第1页
2012-2013第二学期11本UML第十四章UML模式设计.ppt_第2页
2012-2013第二学期11本UML第十四章UML模式设计.ppt_第3页
2012-2013第二学期11本UML第十四章UML模式设计.ppt_第4页
2012-2013第二学期11本UML第十四章UML模式设计.ppt_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1,UML 面向对象技术教程,第十四章 UML与设计模式,天津理工大学华信软件学院,2,一设计模式,最初提出设计模式概念的是建筑学家Alexander。 发现通过观察解决相似问题的不同解决方案,可以缩小他的关注焦点,可以洞悉优秀设计之间的相似之处,并把这些相似之处称为模式(Pattern)。 设计模式定义为“在某特定环境下某问题的解决方法”。 这样就可反复地使用该方案,而不必作重复劳动。 模式研究的拓展 “模式”- 同样适合于软件的开发, GoF 提出了23种设计模式。,3,二.为什么要使用设计模式?(Design Pattern),1运用模式简化并加快设计。 从设计模式入手可不必从底层做起,简化开发过程。 2成熟的模式更便于沟通。 运用设计模式可更准确地描述问题,用一致的解决方案更易于理解。 3成熟的模式更有利于降低开发风险。 设计模式是经过多次使用和验证的,所以可降低失败的可能性。 4更便于转移到面向对象技术。 使用设计模式有助于让开发人员使用新技术,实现技术迁移。,4,三. 设计模式分类。,Gof在其著作中共总结出了23个设计模式。 1按目的划分设计模式: 创建型模式(5);抽象了创建对象的过程。 结构型模式(8);如何组合类和对象获得最大结构。 行为型模式(10) 描述算法和对象之间职责的分配。 2按范围划分设计模式: 类设计模式(3); 对象设计模式(20) 具体的详细分类见下图,5,三. 设计模式分类。,Gof总结出的23个具体的设计模式表:,6,四. 我们如何看待设计模式?,1模式是否可以提高生产力?-结论是:“因人而异!” 模式只有恰到好处的使用才能发挥威力。 在创造新事物的过程中设计模式是无法取代人的位置。但它可以使人(尤其是缺乏经验但有能力的人)获得设计能力。 模式相当于工具箱中的一项工具。 2模式是否可以生成整个系统?-结论是:“否!” 模式的生成能力是指它具有可传授性,参考已有的设计模式对于设计体系结构是很有用的。 模式可以覆盖软件体系结构的某些方面,但不可能覆盖所有的方面,应发挥开发自己的主观创造性来填补其他的空白。,7,3模式是记述(记载)某些专家的成功经验。 模式可以针对OO对象(或非面向对象)来设计和实现。固定格式的模式不可能适应所有的需求,比较有普遍意义的是模式的概念,它是记载并传达专家经验的工具。那么怎样使用设计模式? GoF给出的方法:(可以提供参考的方法) 1)大致浏览一遍模式; 2)研究结构部分; 3)观看代码示例部分; 4)选择模式,使它在应用上下文中有意义; 5)定义类; 6)定义操作。,四. 我们如何看待设计模式?(续),8,五. 设计模式示例,把上图加以改进,成为 下图“手柄-本体”模式。,Person有两个子类User以及Buyer,并限制子类对象只能是用户及买家,“手柄-本体”模式(Handle-Body Pattern) 表示一个人(对象)可以同时具有用户和买主两个 角色。后者和供应商有交易关系。虚线内的设计模式 增加了设计的灵活性。,1、设计模式示例,角色,交易,9,2Facade设计模式(见P156图14.1) 将类之间的复杂关系简化成为对应与“接口”的实现关系。,没用Facade的设计模式 使用Facade的设计模式,使用了Facade设计模式,为子系统中的一组接口提供 一个一致的界面,可以降低系统中各部分之间的依赖关系,增加了系统的灵活性。,五. 设计模式示例(续),Client类,子系统 类,10,上例中体现了Facade设计模式的低耦合性: 左图的Client类:Q、R、S和子系统之间的接口多,因而耦合性很强。右图中用了Facade设计模式后每个Client类通过调用统一的Facade类的方法来与子系统通信,很少直接存取子系统的对象。因此大大降低了它们之间的耦合度。 使用Facade设计模式的具体实例请参阅P157-158, Facade设计模式经常使用在数据库的操作上,实现接口类的操作,大大地降低了交互访问,比如在JDBC中就是通过这样的设计模式对接口进行的实现。 Jdbc传统方法和Fcacde实现方式的区别: 装载数据库驱动-Connection连接数据库-用对象获取数据库的库表这样几个步骤。而Facade则直接通过Database和ResultSet接口来实现。,五. 设计模式示例(续二),11,3“工厂方法”(factory Method)设计模式;,五. 设计模式示例(续三),1)产品(Product)定义了由 factory Method()方法创建的Product对象的接口。 2)具体产品(Concrete Product)实现了Product类的接口。 3)创建者(Creator)声明一个公有 factory Method() 方法(接口),返回一个Product类型的对象。(当然也可能返回一个Boolean值) 4) 具体创建者(Concrete Creator)实现了上述方法,返回类型为Product 的对象实例。(或Boolean值) 5)客户(Client)仅使用Creator类和Product类声明的接口。,产品,创建者,具体产品,12,注意: 把 Creator和Product定义成抽象类,把 Concrete Creator 和 Concrete Product作为子类继承上述抽象类也是可以的,但版型和关联符号是不同的。 优点: 1)对比来讲,直接创建对象应该说来的更灵活; 2)更加易于修改和维护; 3)容易扩展。,五. 设计模式示例(续四),13,4“抽象工厂”(Abstract Factory)的设计模式 每个工厂制造出一系列产品,各工厂制造的产品种类是一样的,只是产品外观和行为(功能)方面不同。比如图形界面上都有滚动条(Scroll Bar)、按钮(Button)和文本框(Text Box)。但是,在Unix上的Motify界面的滚动条、按钮、和文本框和在MS Windows及在IBM OS/2界面的滚动条、按钮、和文本框的风格均不一样! 如何表示和研究上述情况,这就是“抽象工厂”设计模式的基本出发点。见下图:,五. 设计模式示例(续五),14,1)抽象工厂声明创建抽象产品的操作接口 createProductA() 和 createProductB() 2)具体工厂类(包括 concreteFactory1, concreteFactory2)实现创建具体产品对象的操作;,五. 设计模式示例(续六),抽象类,15,3)抽象产品类(Abst-Prod A 和 Abst-Prod B)各声明一种产品对象的接口; 4)具体产品类(Prod A1, Prod B1,Prod A2, Prod B2) 将定义被具体工厂类创建的,实现抽象产品类接口; 5)客户类(Client)仅使用抽象工厂类和抽象产品类声明的接口。 优点:1)隔离了具体类.使产品族间的转换容易进行。 2)容易实现一次应用只使用同一系统中的产品对 象。 问题:扩展工厂容易,但扩展新产品种类则很难。,五. 设计模式示例(续七),16,六、在Rose中使用设计模式,Rose 2003的两种设计模式: Rose提供了设计模式生成器,可以简化各项操作。 1、根据设计模式,直接设计出每个类。 2、使用设计模式生成器,生成各个类。 具体操作步骤举例:针对使用设计模式的过程。 设置Jave环境 (Tool-Option-Notaion中设置)建模设计模式 设置

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论