在计算机编程中,适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
有两类适配器模式:
·对象适配器模式 - 在这种适配器模式中,适配器容纳一个它我包裹的类的实例。在这种情况下,适配器调用被包裹对 象的物理实体。
·类适配器模式 - 这种适配器模式下,适配器继承自已实现的类(一般多重继承)。
关于JAVA适配器的解释
将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 ——Gang of Four
以电脑和鼠标为例。假如有一台笔记本,只有USB鼠标接口,那么代码如下:
UsbMouse.java
- package Adapter;
- public class UsbMouse {
- public String getUsbMouse(){
- return "USB鼠标";
- }
- }
package Adapter;
public class UsbMouse {
public String getUsbMouse(){
return "USB鼠标";
}
}
Computer.java
- package Adapter;
- public class Computer{
- UsbMouse mouse = new UsbMouse();
- public void StartUp(){
- String a = mouse.getUsbMouse();
- System.out.println("获得"+a+"成功!");
- }
- }
package Adapter;
public class Computer{
UsbMouse mouse = new UsbMouse();
public void StartUp(){
String a = mouse.getUsbMouse();
System.out.println("获得"+a+"成功!");
}
}
测试代码,客户端Client.java
- package Adapter;
- public class Client {
- public static void main(String[] args) {
- Computer computer = new Computer();
- computer.StartUp();
- }
- }
package Adapter;
public class Client {
public static void main(String[] args) {
Computer computer = new Computer();
computer.StartUp();
}
}
要是现在没有USB鼠标,只有PS2鼠标,那么怎么办呢?
代码如下:
新增一个PS2鼠标接口:MouseInterface .java
- package Adapter;
- //ps2鼠标接口
- public interface MouseInterface {
- public String getPS2Mouse();
- }
package Adapter;
//ps2鼠标接口
public interface MouseInterface {
public String getPS2Mouse();
}
PS2鼠标PS2Mouse .java
- package Adapter;
- public class PS2Mouse extends UsbMouse implements MouseInterface {
- public String getPS2Mouse(){
- return "PS2鼠标";
- }
- }
package Adapter;
public class PS2Mouse extends UsbMouse implements MouseInterface {
public String getPS2Mouse(){
return "PS2鼠标";
}
}
将之前的Computer.java改成如下代码:
- package Adapter;
- public class Computer{
- //UsbMouse mouse = new UsbMouse();
- PS2Mouse mouse = new PS2Mouse();
- public void StartUp(){
- String a = mouse.getUsbMouse();
- String b = mouse.getPS2Mouse();
- System.out.println("获得"+a+"成功!");
- System.out.println("获得"+b+"成功!");
- }
- }
package Adapter;
public class Computer{
//UsbMouse mouse = new UsbMouse();
PS2Mouse mouse = new PS2Mouse();
public void StartUp(){
String a = mouse.getUsbMouse();
String b = mouse.getPS2Mouse();
System.out.println("获得"+a+"成功!");
System.out.println("获得"+b+"成功!");
}
}
如上代码所示,增加了一个接口,和一个适配器(PS2鼠标)。电脑就可以获得PS2和USB的鼠标了