欢迎来到天天文库
浏览记录
ID:40313369
大小:150.10 KB
页数:19页
时间:2019-07-30
《设计模式Adapter》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、A:<设计模式>一书中的描述"将一个类的接口转换成客户希望的另一个接口,Adapter模式使原本由于接口不兼容而不能一起工作的类可以一起工作"简单的说,就是利用现有的接口去包装一个第三方的接口,使其能象现有接口一样被程序调用,而不考虑实际使用类的差异举例:当前系统有一个绘图接口IDraw,其中定义了display()方法,用来显示一个现在同事A,给我一套新的绘图类,但是这个类却使用了show()方法来显示一个图形我不能修改这个新接口,因为他被编译了,如果直接使用此接口,我不得不修改主程序以适应这个接口,这是一个繁重的工作但是,使用Adapter模式,可以
2、根据IDraw接口来创建一个"适配器"classMyDrawimplementsIDraw{OtherDrawotherDraw=newOtherDraw();publicvoiddisplay(){otherDraw.show();}}现在我们可以调用MyDraw的display()方法来显示图形了,主程序不会意识到下端子系统的变化Adapter模式与Facade模式很相象他们都封装了原有的接口他们之间的区别在于Facade模式不按照某个接口设计Adapter模式必须按照某个类设计Facade一般不需要多态行为Adapter模式大多可能是为了现有的多态
3、行为而使用的Facade是为了简化原有的复杂接口Adapter必须遵循一个已有的接口,不能简化任何东西,即使可能存在更简单的接口B:意图将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。(GoF)场景相信很多人都知道什么是显卡,也有很多人知道显卡的本名——图形适配器。恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式。我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Target的信号。可是我们手头上只有CPU
4、(Adaptee)这个产生各种描述图形的数据的数据发送器。我们需要将这些数据让显示器进行显示,可是这两个部件却是不兼容的。于是我们需要一个中间设备,它能够将CPU“适配”于显示器,这便是我们的显卡——图形适配器(Adapter)。java代码 1.// 图形发送设备 2.public class Target { 3. /** 4. * 传送图形信号 5. */ 6. public String request() { 7. return "Graphic sender"; 8. } 9.} j
5、ava代码 1.// 显示器 2.public class Client { 3. 4. public static void main(String[] args) { 5. Target target = new Targete(); 6. System.out.println(target.request()); 7. } 8.} 可是我们的CPU(Adaptee)只能输出0/1数据,他是个计算器,而不是图形发送设备(Target)。java代码 1.// CPU 2.public clas
6、s Adaptee { 3. /** 4. * CPU输出的数据 5. */ 6. public String getData() { 7. return "CPU data"; 1. } 2.} 这个时候我们的显卡(Adapter)的作用便体现出来了,它负责对CPU进行适配,通过将CPU传过来的数据转换成图形信号,从而将CPU伪装成一个图形发送设备。java代码 1.// 显卡,即我们的适配器 2.public class Adapter extends Target { 3. 4.
7、 // 被代理的设备 5. private Adaptee apt = null; 6. 7. /** 8. * 装入被代理的设备 9. */ 10. public Adapter(Adaptee apt) { 11. this.apt = apt; 12. } 13. 14. /** 15. * 被代理的设备传过来的数据转换成为图形输出 16. */ 17. public String request() { 18. return apt
8、.getData(); 19. } 20.} 这样,我们的电脑的显示
此文档下载收益归作者所有