适配器模式(adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。
适配器模式适用场景
- 已经存在的类,他的方法和需求不匹配的情况
- 适配器模式不是软件你设计阶段考虑的设计模式,是随着软件维护,由于不同产品,不同厂家造成功能类似而接口不相同的情况下的解决方案。
适配器模式的应用场景
在手机充电时,我们通常用5V充电,而家里的电压却是220V。这时就需要我们的适配器 — 充电器了。
首先,创建AC220类,表示220V交流电
public class AC220 {
public int output220V(){
int output = 220;
System.out.println("输出交流电:"+output+"v");
return output;
}
}
接着创建DC5接口,表示5V直流电的标准
public interface DC5 {
int output5V();
}
创建电源适配器 PowerAdapter
,让电源适配器实现DC5的标准。采用一种特殊的工艺,把220V降到5V。。。
public class PowerAdapter implements DC5 {
private AC220 ac220;
public PowerAdapter(AC220 ac220) {
this.ac220 = ac220;
}
@Override
public int output5V() {
int adapterInput = ac220.output220V();
int adapterOutput = adapterInput/44;
System.out.println("使用充电器前电压:"+adapterInput+"v,使用之后:"+adapterOutput+"v");
return adapterOutput;
}
}
最后是测试
public class Test {
public static void main(String[] args) {
DC5 dc5 = new PowerAdapter(new AC220());
dc5.output5V();
}
}
通过电源适配器实现了二者的兼容。
适配器模式的优缺点
优点:
- 能提高类的透明性和复用,现有类复用但不需要改变。
- 目标类和适配器类解耦,提高程序的扩展性。
- 在业务场景中符合开闭原则
缺点: - 适配器编写过程需要全面考虑,可能会增加系统复杂性。
- 增加代码阅读难度,降低代码可读性,过多使用适配器会使系统变得凌乱。