适配器模式(Adapter Pattern)又叫作变压器模式,它的功能是将一个类的接口变成客户端所期望的另一种接口,从而使原本因接口不匹配而导致无法在一起工作的两个类能够一起工作,属于结构型设计模式。

    • 目标角色(ITarget):也就是我们期望的接口。
    • 源角色(Adaptee):存在于系统中,是指内容满足客户需求(需转换)但接口不匹配的接口实例。
    • 适配器(Adapter):将Adaptee转化为目标角色ITarget的类实例。
    1. public class Adaptee {
    2. void adaptMethod(){
    3. }
    4. }
    5. public interface ITarget {
    6. void targetMethod();
    7. }
    8. //类适配器
    9. public class Adapter1 extends Adaptee implements ITarget {
    10. @Override
    11. public void targetMethod() {
    12. super.adaptMethod();
    13. }
    14. }
    15. //对象适配器
    16. public class Adapter2 implements ITarget{
    17. private Adaptee adaptee;
    18. public Adapter2(Adaptee adaptee) {
    19. this.adaptee = adaptee;
    20. }
    21. @Override
    22. public void targetMethod() {
    23. this.adaptee.adaptMethod();
    24. }
    25. }

    场景:
    适配器模式用于维护已经存在的类,以不改造原来类的前提下适配目标类,是一种补偿做法

    类适配器:继承关系,只能单继承
    对象适配器:关联关系

    框架:
    spring aop的AdvisorAdapter
    spring mvc的HandlerAdapter

    与装饰器模式的区别
    image.png
    优点
    (1)能提高类的透明性和复用,但现有的类复用不需要改变。
    (2)适配器类和原角色类解耦,提高程序的扩展性。
    (3)在很多业务场景中符合开闭原则。
    缺点
    (1)适配器编写过程需要结合业务场景全面考虑,可能会增加系统的复杂性。
    (2)增加代码阅读难度,降低代码可读性,过多使用适配器会使系统代码变得凌乱。