您的位置:首页 > 编程语言 > Java开发

设计模式之适配器模式--java描述

2017-03-12 18:27 369 查看
转载:http://www.importnew.com/23477.html   (推荐此链接,讲的比较通俗易懂),也可以参考博客:http://www.cnblogs.com/maowang1991/archive/2013/04/15/3023236.html


我们周围的适配器

如果你需要在欧洲国家使用美国制造的笔记本电脑,你可能需要使用一个交流电的适配器。

你知道适配器的作用:它位于美式插头和欧式插座的中间,它的工作是将欧式插座转换成美式插座,好让美式插头可以插进这个插座得到电力。或者也可以这么认为:适配器改变了插座的接口,以符合美式笔记本电脑的需求。

好了,这是真实世界的适配器,那面向对象适配器又是什么呢?其实,OO适配器和真实世界的适配器扮演着同样的角色:将一个接口转换成另一个接口,以符合客户的期望。


面向对象适配器

假设已有一个软件系统,你希望它能和一个新的产商类库搭配使用,但是这个新产商所设计出来的接口,不同于旧产商的接口:



你不想改变现有的代码,解决这个问题(而且你也不能改变产商的代码)。所以该怎么做?你可以写一个类,将新产商接口转换成你所期望的接口。



这个适配器工作起来就如同一个中间人,它将客户所发出的请求转换成产商类能理解的请求。这个适配器实现了你的类所期望的接口,而且这个适配器也能和产商的接口沟通。


火鸡转换器

我们先来看看一个简化的鸭子和火鸡的接口和类:

现在,假设你缺鸭子对象,想用一些火鸡对象来冒充。显而易见,因为火鸡的接口不同,所以我们不能公然拿来用。那么,写个适配器吧:


适配器模式解析

客户使用适配器的过程如下:

1. 客户通过目标接口调用适配器的方法对适配器发出请求;

2. 适配器使用被适配者接口把请求转换成被适配者的一个或多个调用接口;

3. 客户接收到调用的结果,但并未察觉这一切是适配器在起转换作用。

请注意,客户和被适配者是解耦的,一个不知道另一个。

现在,我们知道,这个模式可以通过创建适配器进行接口转换,让不兼容的接口变成兼容。这可以让客户从实现的接口解耦。如果在一段时间之后,我们想要改变接口,适配器可以将改变的部分封装起来,客户就不必为了应对不同的接口而每次跟着修改。

这个适配器模式充满着良好的OO设计原则:使用对象组合,以修改的接口包装被适配者。这种做法还有额外的优点,那就是,被适配者的任何子类,都可以搭配着适配器使用。

也请留意,这个模式是如何把客户和接口绑定起来,而不是和实现绑定起来的。我们可以使用数个适配器,每一个都负责转换不同组的后台类。或者,也可以加上新的实现,只要它们遵守目标接口就可以。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 设计模式