适配器(Adapter)模式是为解决不兼容不匹配问题而引入的。
定义:
适配器模式将一个类的接口转换成客户期望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类能在一起工作。
分类:
1. 组合方式——对象适配器
特点:把被适配者作为一个对象组合到适配器中,以修改目标接口包装被适配者。
2. 继承——类适配器
特点:通过多重继承不兼容接口,实现对目标接口的匹配,单一的为某各类而适配。
例子:插座适配器的实现
1)定义三项插座的接口
public interface ThreePlugIf {
public void powerWithThree();
}
public class GBTwoPlug {
public void powerWithTwo(){
System.out.println("使用二项电流供电");
}
}
import offers.ThreePlugIf;
/*
* 二项转三项的插座适配器
*/
public class TwoPlugAdapter implements ThreePlugIf {
private GBTwoPlug plug;
public TwoPlugAdapter(GBTwoPlug plug){
this.plug = plug;
}
@Override
public void powerWithThree() {
System.out.println("通过转换");
plug.powerWithTwo();//注意这里,三项电源的方法实现调研了二项电源
}
}
public class NoteBook {
private ThreePlugIf plug;
public NoteBook(ThreePlugIf plug){
this.plug = plug;
}
public void charge(){
plug.powerWithThree();
}
public static void main(String[] args) {
GBTwoPlug two = new GBTwoPlug();
ThreePlugIf three = new TwoPlugAdapter(two);
NoteBook nb = new NoteBook(three);
nb.charge();
}
}
总结:适配器模式的作用
1. 透明
通过适配器,客户端可以调用同一接口,因而对客户端来说是透明的,这样做简单、直接、紧凑。
2. 重用
复用了现存的类,解决了现存类和复用环境不一致的问题。
3. 低耦合
将目标类和适配者解耦,适配器类重用新的适配者,无需修改代码(开闭原则)。