欢迎来到天天文库
浏览记录
ID:48763456
大小:413.50 KB
页数:24页
时间:2020-01-22
《设计模式-1适配器模式.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、适配器模式适配器现实中到处都是如:中国制造的笔记本电脑带到欧洲使用,需要一个交流电的适配器面向对象适配器假设有一个软件系统,你希望它能和一个新的厂商类库搭配使用,但是这个新厂商所设计出来的接口,不同于旧厂商的接口现有系统厂商类不想改变现有代码也不能改变厂商的代码怎么办?现有系统厂商类适配器例子需求有一个Shape类,和几个派生类要求实现一个新的Shape——圆(Circle)优秀的编程人员首先会四处寻找替代方案发现有人已经编写好了一个处理圆形的类,名叫XXCircle它并不知道我们的命名规则,而是displayItfillItundisplayIt不能直接使用
2、XXCircle,因为想保持Shape类的多态行为名称和参数列表与Shape类不同无法从Shape类派生Circle包含一个XXCircle实现Adapter模式ClassCircleextendsShape{privateXXCirclemyXXCircle;publicCircle(){myXXCircle=newXXCircle();}voidpublicdisplay(){myXXCircle.displayIt();}…}客户使用适配器的过程如下:客户通过目标接口调用适配器的方法对适配器发出请求适配器使用被适配者接口把请求转换成被适配者的一个或多个调
3、用接口客户收到调用的结果,但并未察觉这一切是适配器在起转换作用Adapter模式定义定义:将一个类的接口,转换成客户期望的另一个接口。意图:使控制范围之外的一个原有对象与某个接口匹配问题:系统的数据和行为都正确,但是接口不符。通常用于必须从抽象类派生时。解决方案:Adapter模式提供了具有所需接口的包装类。Adapter模式定义参与者与协作者:Adapter改变了Adaptee的接口,使Adaptee与Adapter的基类Target匹配。这样Client就可以使用Adaptee了,好像它是Target类型。Adapter模式定义效果:Adapter模式使原
4、有对象能够适应新的类结构,不受其接口的限制。实现:将原有类包含在另一个类之中。让包含类与需要的接口匹配,调用被包含类的方法类的适配器类适配器不是使用组合来适配被适配者,而是继承被适配者和目标类练习试着将Shape类,Circle类,XXCircle类对应到对象适配器/类适配器模式的定义中真实世界中的适配器想一想Java语言中不同版本中有没有需要进行适配的真实世界中的适配器早期java版本中集合(Collection)类型(例如:Vector,Stack,Hashtable)都实现了一个elements()方法。该方法返回一个Enumeration(枚举)新版本
5、中开始使用Iterator(迭代器)接口,这个接口和枚举接口很像,但不同的是,迭代器还提供了删除元素的能力。问题面对遗留代码,这些代码会暴露出枚举器接口,但我们又希望在新的代码中只使用迭代器。解决办法构造一个适配器将枚举适配到迭代器实例有一个类(adaptee)实现了数学中的幂次运算,方法中需要传入两个参数,一个是基数base,另外一个是幂次exp。现在客户端需要一个求得一个数的平方的函数接口(target),传入一个数,得到它的平方值。为了复用已经存在的类adaptee,适用Adapter来适配adaptee,adapter实现了target接口。在架构层次
6、上的应用JDBC驱动软件与适配器模式JDBC给出一个客户端通用的界面。每个数据库引擎的JDBC驱动软件都是一个介于JDBC接口和数据库引擎接口之间的适配器软件抽象的JDBC接口和各个数据库引擎的API之间都需要相应的适配器软件,即为各个数据库引擎准备的驱动软件。JDBC/ODBC桥梁如果没有合适的JDBC驱动软件,用户也可以通过ODBC驱动软件把JDBC通过一个JDBC/ODBC桥梁软件与ODBC驱动软件连接起来,从而达到连接数据库的目的。
此文档下载收益归作者所有