设计模式之——适配器(Adapter)模式
适配器模式定义
将一个类的接口适配成用户所期待的。一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
适配器模式的优点
- 客户端可以透明地调用目标接口。
- 将目标类和适配者类解耦,解决了目标类和适配者类接口不一致的问题。
- 复用了现存的类,不需要修改原有代码。
适配器模式的缺点
- 如果需要更换适配器,那么其实现过程就会比较复杂。
适配器模式的实现
定义一个目标接口
/**
* @ClassName Target
* @Description TODO
* @Author mamingcong
* @Date 2020/6/9 13:02
* @Version 1.0
*/
public interface Target {
public void call();
}
定义一个适配者
/**
* @ClassName Adapter
* @Description TODO
* @Author mamingcong
* @Date 2020/6/9 13:04
* @Version 1.0
*/
public class Adapter {
public void adapt() {
System.out.println("我是适配方法");
}
}
定义一个对象适配者类
/**
* @ClassName AdaptObject
* @Description TODO
* @Author mamingcong
* @Date 2020/6/9 13:07
* @Version 1.0
*/
public class AdaptObject implements Target {
private Adapter adapter;
public AdaptObject(Adapter adapter) {
this.adapter = adapter;
}
@Override
public void call() {
adapter.adapt();
}
}
测试
/**
* @ClassName Test
* @Description TODO
* @Author mamingcong
* @Date 2020/6/9 13:12
* @Version 1.0
*/
public class Test {
public static void main(String[] args) {
Adapter adapt= new Adapter();
AdaptObject adaptObject= new AdaptObject(adapt);
adaptObject.call();
}
}
运行结果
我是适配方法
适配器模式的使用场景
- 以前开发的系统存在满足新系统功能需求的类,但其接口同新系统的接口不一致。
- 使用第三方提供的组件,但其接口定义和自己的定义不同。