适配器模式
定义:将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
适配器模式角色介绍
- Target:目标角色,客户端将要调用的接口。
- Adaptee:受改角色,原始接口也是实际调用的接口。
- Adapter:适配器角色,负责兼容Target与Adaptee之间的不兼容。
适配器模式属于结构型模式,也很容易理解。可以看看笔记本电脑的电源线,连接220V的插头通过电源适配器转化成12V的接口供给电脑使用,适配器模式就是干类似的事情,解决两个接口的不兼容。
代码示例
目标接口(12V)
public interface Voltage12 {
void _12V();
}
原始接口(220V)
public class Voltage220 {
public void _220V(){
System.out.println("实际是220V");
}
}
12V适配器
public class VoltageAdapter implements Voltage12{
private Voltage220 voltage220 = new Voltage220();
public void _12V() {
//...经过XXX的处理,12V可以使用220V
voltage220._220V();
}
}
客户端
Voltage12 voltage12 = new VoltageAdapter();
voltage12._12V();//实际上是220V
从上面的例子可以看出,220V经过适配器转化成12V。有的人会说为什么不直接修改220V为12V就好了,从现实上讲根本不可能,因为电器电压都有不同的,从代码上角色可以直接修改,但是还记得开闭原则吗,对外开放对内关闭,比如220V已经迭代很多版本,使用的地方很多,如果直接修改220V类难免会影响其他类,这也轻松导致BUG的产生。而12V类也不愿意多做修改,只有通过适配器让它们兼容起来。不足之处望指教。