package com.zzy.adapter; /** * PS2接口,圆口 * @author eason * */ public interface PS2Port { public void workWithPS2(); } USBPort Java代码 收藏代码 package com.zzy.adapter; /** * USB接口,U口 * @author eason * */ public interface USBPort { public void workWithUSB(); }
package com.zzy.adapter; /** * 对象适配器 * 将PS2接口装换成USB接口 * 所以此类类型是USB接口(implements USBPort) + 成员变量ps2Port * @author eason * */ public class PS2ToUSB implements USBPort{ private PS2Port ps2Port; public PS2ToUSB(PS2Port ps2Port) { this.ps2Port = ps2Port; } @Override public void workWithUSB() { System.out.println("转换的关键在这里,本来是"); ps2Port.workWithPS2(); System.out.println("经过你的转换,现在是USB工作中"); } }
package com.zzy.adapter; /** * 测试类 * client * @author eason * */ public class TestAdapter { public static void main(String[] args) { //1.我现在有一个PS2接口 PS2Port ps2Port = new PS2Port() { @Override public void workWithPS2() { System.out.println("PS2工作中"); } }; //2.但是我需要的是一个USB接口啊,对我(client)来说,我只认识USB接口 //3.经过PS2ToUSB的转换,PS2接口变成了USB接口 USBPort ps2ToUsbPort = new PS2ToUSB(ps2Port); ps2ToUsbPort.workWithUSB(); } }
package com.zzy.adapter; /** * 类适配器 * @author eason * */ public class PS2ToUSB implements USBPort, PS2Port{ //重写workWithUSB,把工作交给workWithPS2 @Override public void workWithUSB() { workWithPS2(); } }差别就是:对象适配器实现了客户端想要的接口(USB),在内部有一个被适配对象(PS2)的引用,通过组合实现适配功能。类适配器实现了客户端想要的接口(USB)和被适配对象接口(PS2),通过继承来实现适配功能。
原文地址:http://blog.csdn.net/itjavawfc/article/details/43954641