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