一、适配器模式介绍
适配器模式的主要作用是把原本不兼容的接口通过适配器修改做到统一,方便调用方进行使用;
解决的问题:主要解决如何针对差异化类型的接口实现统一输出;
关键代码:适配器继承或依赖已有的对象,实现想要的目标接口。
模式的结构:
1.目标接口:当前系统所期望的接口,可以是抽象类或接口;
2.适配转换器:它是转换器,通过继承或引用适配者对象,并把它转换成目标接口;
3.待适配者:它是被访问和适配的现有组件接口;
它比如我们平时很常见的转接头,万能充等物体,也是一种适配器模式;
二、代码示例
1.目标接口:Target
// 目标接口
public interface Target
{
// 目标接口的方法;
public void targetTask();
}
2.适配者接口:Adaptee
// 适配者
class Adaptee
{
// 适配者方法
public void adapteeRequest()
{
System.out.println("适配者中的业务代码被调用!");
}
}
3.类适配器:ClassAdapter
class ClassAdapter extends Adaptee implements Target
{
// 实现目标接口的方法
@Override
public void targetTask()
{
// 调用被继承的适配者的方法
adapteeRequest();
}
}
4.客户端调用测试代码:Test
public class Test
{
public static void main(String[] args)
{
Target target = new ClassAdapter();
target.targetTask();
}
}
结果:
适配者中的业务代码被调用!
三、总结
优点:
- 1.很多业务场景下满足了代码的开闭原则;
- 2.让没有关系的类一起运行,将目标与适配者类解耦;
- 3.提高了类的复用,无需修改原有代码而重用现有的适配者类;
- 4.增加了类的透明度:客户端可以通过适配器透明地调用目标接口;
缺点:
- 1.适配器编写过程要结合业务场景全面考虑,增加了系统的复杂性
- 2.增加代码阅读难度,不利于维护。
- 3.过多的使用会使系统变得零乱,不容易整体把握业务思路;
注意事项:适配器不是在详细设计时添加的,而是解决正在服役项目已有功能出现的问题。