- 1、本文档共21页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2012-2013 第二学期 11本 UML 第十四章 UML模式设计课件
UML 面向对象技术教程;一.设计模式;二.为什么要使用设计模式?(Design Pattern); 三. 设计模式分类。; 三. 设计模式分类。; 四. 我们如何看待设计模式?;3.模式是记述(记载)某些专家的成功经验。
模式可以针对OO对象(或非面向对象)来设计和实现。固定格式的模式不可能适应所有的需求,比较有普遍意义的是模式的概念,它是记载并传达专家经验的工具。那么怎样使用设计模式?
GoF给出的方法:(可以提供参考的方法)
1)大致浏览一遍模式;
2)研究结构部分;
3)观看代码示例部分;
4)选择模式,使它在应用上下文中有意义;
5)定义类;
6)定义操作。;五. 设计模式示例 ;2.Facade设计模式(见P156图14.1)
将类之间的复杂关系简化成为对应与“接口”的实现关系。;上例中体现了Facade设计模式的低耦合性:
左图的Client类:Q、R、S和子系统之间的接口多,因而耦合性很强。右图中用了Facade设计模式后每个Client类通过调用统一的Facade类的方法来与子系统通信,很少直接存取子系统的对象。因此大大降低了它们之间的耦合度。
使用Facade设计模式的具体实例请参阅P157-158,
Facade设计模式经常使用在数据库的操作上,实现接口类的操作,大大地降低了交互访问,比如在JDBC中就是通过这样的设计模式对接口进行的实现。
Jdbc传统方法和Fcacde实现方式的区别:
装载数据库驱动-》Connection连接数据库-》用对象获取数据库的库表这样几个步骤。而Facade则直接通过Database和ResultSet接口来实现。;3.“工厂方法”(factory Method)设计模式;
;注意:
把 Creator和Product定义成抽象类,把 Concrete Creator 和 Concrete Product作为子类继承上述抽象类也是可以的,但版型和关联符号是不同的。
优点:
1)对比来讲,直接创建对象应该说来的更灵活;
2)更加易于修改和维护;
3)容易扩展。 ; 4.“抽象工厂”(Abstract Factory)的设计模式
每个工厂制造出一系列产品,各工厂制造的产品种类是一样的,只是产品外观和行为(功能)方面不同。比如图形界面上都有滚动条(Scroll Bar)、按钮(Button)和文本框(Text Box)。但是,在Unix上的Motify界面的滚动条、按钮、和文本框和在MS Windows及在IBM OS/2界面的滚动条、按钮、和文本框的风格均不一样!
如何表示和研究上述情况,这就是“抽象工厂”设计模式的基本出发点。见下图: ;1)抽象工厂声明创建抽象产品的操作接口
createProductA() 和 createProductB()
2)具体工厂类(包括 concreteFactory1, concreteFactory2)实现创建具体产品对象的操作;
;3)抽象产品类(Abst-Prod A 和 Abst-Prod B)各声明一种产品对象的接口;
4)具体产品类(Prod A1, Prod B1,Prod A2, Prod B2) 将定义被具体工厂类创建的,实现抽象产品类接口;
5)客户类(Client)仅使用抽象工厂类和抽象产品类声明的接口。
优点:1)隔离了具体类.使产品族间的转换容易进行。
2)容易实现一次应用只使用同一系统中的产品对
象。
问题:扩展工厂容易,但扩展新产品种类则很难。;六、在Rose中使用设计模式;具体在Rose 2003 模式设计;添加新的关系类Visitor及Element类;完成设置后形成的模式类元:;将模式生成的几个类拖至类图中形成类图:;生成代码示意图:
文档评论(0)