【设计模式】适配器模式

  |   1 评论   |   68 浏览

简介

可以使一个接口可以变成另一个接口,可以使原来不兼容的类可以一起工作,适配器分为对象适配器(通过组合)、类适配器(通过继承),属于结构型模式。

适用场景

1、方法和需求不兼容的时候,可以使用

优点

1、提供类的复用和透明性,原来的接口不需要改变
2、程序解耦,提供扩展性
3、符合开闭原则

缺点

1、增加复杂性
2、增加代码可读性

代码示例

适配者模式有这几个对象:被适配者、目标、适配者。

类适配器

image.png
具体代码为:
目标接口

public interface Target {
    void getData();
}

被适配者

public class Adaptee {
    public void adapteeGetData(){
        System.out.println("被适配类方法");
    }
}

适配者

public class Adapter extends Adaptee implements Target {
    public void getData() {
        super.adapteeGetData();
    }
}

测试类

public class AdapterTest {
    public static void main(String[] args) {
        Target target = new Adapter();
        target.getData();
    }
}

对象适配器

image.png
具体代码
目标类:

public interface Target {
    void getData();
}

被适配者类

public class Adaptee {
    public void adapteeData(){
        System.out.println("被适配者方法");
    }
}

适配者类

public class Adapter implements Target {
    private Adaptee adaptee = new Adaptee();
    public void getData() {
        adaptee.adapteeData();
    }
}

测试类

public class AdapterTest {
    public static void main(String[] args) {
        Target target = new Adapter();
        target.getData();
    }
}

上面示例源码

源码分析

jdk中应用

XmlAdapter是一个适配者
image.png

Spring中应用

image.png
spring aop中使用了适配器模式。

Spring MVC中应用

HandlerAdapter是适配者接口类,Controller是被适配者,SimpleControllerHandlerAdapter是具体的适配者。
image.png

也可以关注我的公众号:程序之声
图片
关注公众号,领取更多资源

本文为博主原创文章,未经博主允许不得转载。

评论

  • TianlinLIAO 回复»

    springmvc的HandlerAdapter,感觉更像command模式啊。有点晕了。

发表评论