定义
适配器模式(Adapter Pattern)
定义:将一个类的接口变换成客户端所期待的另一种接口,从而使得原本因接口不匹配而无法在一起工作的两个类能够在一起工作
适配器模式也叫做变压器模式,或是包装模式
例如:电源适配器,可以将110-220V之间的电源去给你的电脑充电,同时你的电脑还能正常使用
适配器模式就是把一个接口或类转换成其他的接口或类
Target目标类:这个类定义把其他类转换为什么接口(期望接口)
Adaptee源类:这个类就是就是要被转换的类,它是已经存在且运行良好的类或对象
Adapter适配器类:适配器模式的核心角色,上边两个角色都是已经存在的类,而适配器类是需要创建的,指责很简单,就是将源类转换为目标类,一般是通过继承或是类关联的方式
通用源码
//目标类
//目标类是正在运行的,你不会去修改,我们只能去实现接口中的方法
public interface Target{
//目标类自己的方法
public void request();
}
//目标类的实现类
public class ConcreteTarget implements Target{
public void request(){
System.out.println("111");
}
}
//源类
public class Adaptee{
//原本业务逻辑
public void doSomething(){
System.out.println("222");
}
}
//适配器类
public class Adapter extends Adaptee implements Target{
public void request(){
super.doSomething();
}
}
//场景类
public class Client{
public static void main(String[] args){
//原有业务逻辑
Target target = new ConcreteTarget();
target.request();
//现在增加了适配器类后的业务
Target target2 = new Adapter();
target2.request();
}
}
应用
优点
- 适配器模式可以让两个没有任何关系的类一起运行
- 增加了类的透明性
- 提高了类的复用性
- 灵活性非常好
使用场景
当你有动机修改一个已经投产的接口时,适配器模式是最适合的
如:系统扩展
注意事项
适配器模式最好再详细设计阶段不要去考虑他,它的存在并不是为了解决处于开发阶段的问题,而是为了解决正在运行的项目的问题,主要场景是在扩展应用中
它是一个补偿模式,或是一个补救模式