1.基本作用:适配器模式可以将一个类的接口和另一个类的接口匹配起来。
2.下面我们来举一个java io中的一个适配器实例
InputStream:是表示字节输入流的所有类的超类。
Reader:是用于读取字符流的抽象类。
InputStreamReader: 将字节流转换为字符流。是字节流通向字符流的桥梁。
如何将这两者关联起来,这里就用到了适配器模式,jdk中使用的是对象适配器。下面我们照着jdk自己写个简单的对象适配器:
// Reader抽象类
abstract class Reader {
/*读方法*/
public abstract int read();
}
interface InputStream {
public int read();
}
// InputStreamReader 适配器类
class InputStreamReader extends Reader{
InputStream in ;
public InputStreamReader(InputStream in) {
this.in = in ;
}
@Override
public int read() {
System.out.println("做一些操作, 然后适配 InputStream 的读取");
return in.read();
}
}
// main测试
public static void main(String[] args) throws FileNotFoundException {
// jdk 原始 形势
new java.io.InputStreamReader(new java.io.FileInputStream(new File(""))) ;
// 自己写的适配器模式,是不是结构是一样的
new InputStreamReader(new InputStream() {
@Override
public int read() {
// TODO Auto-generated method stub
return 0;
}
});
}
类适配器模式:类适配器模式和对象适配器模式最大的区别在于适配器和适配者之间的关系不同,对象适配器模式中适配器和适配者之间是关联关系,而类适配器模式中适配器和适配者是继承关系。
// 这种形式 就是 类适配器
class InputStreamReader extends Reader implements InputStream {
@Override
public int read() {
System.out.println("做一些操作, 然后适配 InputStream 的读取");
}
}
适配器就到这里,谢谢大家。
老生常谈:深圳有爱好音乐的会打鼓(吉他,键盘,贝斯等)的程序员和其它职业可以一起交流加入我们乐队一起嗨。我的QQ:657455400