Java设计模式 —— 适配器模式(Adapter)

版权声明:本文为博主经验积累 https://blog.csdn.net/qq_23452385/article/details/89285637

Java设计模式 —— 适配器模式(Adapter)

定义

适配器模式:将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。

特征:

  1. 同样的功能,但老代码和新代码接口不一致

代码实现

1.Android 手机数据线,早期是 Micro USB 接口

class MicroUSB {
    public void connection() {
        System.out.println("Micro USB 接口数据线连接...");
    }
}

2.Android 现在使用 Type-C 接口数据线,

interface Target {
    void connection();
}

class TypeC implements Target {
    @Override
    public void connection() {
        System.out.println("Type-C 接口数据线连接...");
    }
}

3.创建适配器类,继承了被适配类,同时实现标准接口

class DataLineAdapter extends MicroUSB implements Target {

    @Override
    public void connection() {
        System.out.println("插入 Type-C 转接头");
        super.connection();
    }
}

4.客户端代码,测试

public class Main {

    public static void main(String[] args) {
        Target target = new TypeC();
        target.connection();

        Target adapter = new DataLineAdapter();
        adapter.connection();
    }
}

5.结果

Type-C 接口数据线连接…
插入 Type-C 转接头
Micro USB 接口数据线连接…

6.创建适配器类,实现标准接口,将这个调用委托给实现新接口的对象来处理

class PhoneDataLineAdapter implements Target {

    private Target target;

    public PhoneDataLineAdapter(Target target) {
        this.target = target;
    }

    @Override
    public void connection() {
        System.out.println("插入 Type-C 转接头");
        target.connection();
    }
}

public class Main {

    public static void main(String[] args) {
        // 使用特殊功能类,即适配类
        Target adapter = new PhoneDataLineAdapter(new TypeC());
        adapter.connection();
    }
}

适配器模式使用问题

1、过多地使用适配器,会让系统非常零乱,不易整体进行把握。如果不是很有必要,可以不使用适配器,而是直接对系统进行重构。
2.由于 JAVA 至多继承一个类,所以至多只能适配一个适配者类,而且目标类必须是抽象类。

Android中适配器模式

最常见的ListView、GridView、RecyclerView等的Adapter

感谢

segmentfault: 适配器模式
菜鸟教程:适配器模式
百度百科:适配器模式
郭霖: Java设计模式透析之 —— 适配器(Adapter)

猜你喜欢

转载自blog.csdn.net/qq_23452385/article/details/89285637