简述
适配器模式,目的是将A对象通过适配、转换的方式转换成B对象来使用,为什么转换为B对象?因为用户通过依赖B对象来使用。
适配器的实现有两种方式。
继承实现
组合实现
基于Java单继承的机制,组合实现的方式更为常见、灵活。
Reader、InputStream之间的适配,字符流、字节流之间的适配
Demo代码就不写了,去JDK看一个使用例子,是很好的参考,就是IO中的Reader
、InputStreamReader
、InputStream
:
InputStream implements Closeable:
Reader implements Readable, Closeable:
InputStreamReader:
InputStreamReader的使用:
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
public class InputStreamTest {
public static void main(String[] args) {
try {
FileInputStream fis = new FileInputStream("D:/README.TXT"); // FileInputStream extends InputStream
InputStreamReader isr = new InputStreamReader(fis); // InputStreamReader extends Reader
BufferedReader br = new BufferedReader(isr); // BufferedReader extends Reader
String s = null;
while ((s = br.readLine()) != null) {
System.out.println(s);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
思考题
适配器模式与装饰器模式的区别?