设计模式之适配器(Adapter)

Adapter Wapper 接口转换器

如果一个类不能直接访问另一个类的时候,中间加一个Adapter转换器就能访问了
设计模式之适配器(Adapter)_第1张图片
常见例子:
电压转接头
java.io
jdbc-odbc bridge(不是桥接模式)
ASM Transformer

java io里面的读文件操作:
FileInputStream是字节流读文件,就像一根管子怼在了文件上,一个个字节的往外读文件
但是我想用BufferedReader读文件,它是按字符流来读取文件的
这时候BufferedReader没办法直接读FileInputStream的数据
就需要InputStreamReader将字节流转成字符流
这里的InputStreamReader就是适配器

public class Main {
    public static void main(String[] args) throws Exception {
        FileInputStream fis = new FileInputStream("c:/test.text");
        InputStreamReader isr = new InputStreamReader(fis);
        BufferedReader br = new BufferedReader(isr);
        String line = br.readLine();
        while (line != null && !line.equals("")) {
            System.out.println(line);
        }
        br.close();


    }
}

jdbc-odbc bridge(不是桥接模式): --> 它是适配器模式
数据库SqlServer,微软的产品,访问它的数据的时候,暴露的接口是odbc
但是java提供的是jdbc
但是java想要访问odbc的接口怎么办呢?–> jdbc和odbc之间来一个jdbc-odbc bridge
设计模式之适配器(Adapter)_第2张图片

常见误区:
常见的Adapter类反而不是Adapter模式 --> 比如WindowAdapter类
WindowListener类里面有5,6个方法,用来监听窗口事件,如果你直接创建WindowListener,
需要实现里面的所有方法
设计模式之适配器(Adapter)_第3张图片

但是有WindowAdapter类,就只需要实现你想要的方法就行
设计模式之适配器(Adapter)_第4张图片

WindowAdapter是一个抽象类,它实现了WindowListener的所有方法,只不过是空的,这样你就只需要实现自己
想要的方法就行了

设计模式之适配器(Adapter)_第5张图片

WindowAdapter不是适配器模式 常见的Adapter类,就是个空实现 只是为了方便编程 只需要完成想要的方法就行

你可能感兴趣的:(设计模式,设计模式,适配器,Adapter)