适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。
适配器模式的用途
用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此问题,而这正像是本模式所做的事情。
适配器模式的结构
适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。
package 设计模式;
/*
* 适配器设计模式
*/
public class AdapterTest {
public static void main(String[] args) {
PowerA a=new PowerAImpl();
input(a);
//*******************适配器主调用*************************
PowerB b=new PowerBImpl();
// input(b);//注意接口不兼容
PowerAdapter adapter=new PowerAdapter(b);
input(adapter);
}
//**************************************************
public static void input(PowerA a) {
a.connect();
}
}
//适配器,可以适配电源A适配器
class PowerAdapter implements PowerA{
private PowerB b;
public PowerAdapter(PowerB b) {
this.b=b;
}
@Override
public void connect() {
// TODO Auto-generated method stub
b.insert();
}
}
//********PowerB************
interface PowerB{
public void insert();
}
class PowerBImpl implements PowerB{
@Override
public void insert() {
// TODO Auto-generated method stub
System.out.println("电源B接口开始工作");
}
}
//********PowerA************
interface PowerA{
public void connect();
}
class PowerAImpl implements PowerA{
@Override
public void connect() {
// TODO Auto-generated method stub
System.out.println("电源A接口开始工作");
}
}