Adapter Wapper 接口转换器
如果一个类不能直接访问另一个类的时候,中间加一个Adapter转换器就能访问了
常见例子:
电压转接头
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类反而不是Adapter模式 --> 比如WindowAdapter类
WindowListener类里面有5,6个方法,用来监听窗口事件,如果你直接创建WindowListener,
需要实现里面的所有方法
但是有WindowAdapter类,就只需要实现你想要的方法就行
WindowAdapter是一个抽象类,它实现了WindowListener的所有方法,只不过是空的,这样你就只需要实现自己
想要的方法就行了
WindowAdapter不是适配器模式 常见的Adapter类,就是个空实现 只是为了方便编程 只需要完成想要的方法就行