常用jdk中的设计模式----Adapter

java中的Adapter模式: 把一个接口或是类变成另外一种。

java.util.Arrays#asList()
javax.swing.JTable(TableModel)
java.io.InputStreamReader(InputStream)
java.io.OutputStreamWriter(OutputStream)
javax.xml.bind.annotation.adapters.XmlAdapter#marshal()
javax.xml.bind.annotation.adapters.XmlAdapter#unmarshal()

查看InputStreamReader的api说明如下:

InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。

每次调用 InputStreamReader 中的一个 read() 方法都会导致从底层输入流读取一个或多个字节。要启用从字节到字符的有效转换,可以提前从底层流读取更多的字节,使其超过满足当前读取操作所需的字节。

为了达到最高效率,可要考虑在 BufferedReader 内包装 InputStreamReader。例如:

BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

类InputStreamReader 

public class InputStreamReaderextends Reader{//构造函数
InputStreamReader(InputStream in) 
InputStreamReader(InputStream in, Charset cs) 
InputStreamReader(InputStream in, CharsetDecoder dec) 
InputStreamReader(InputStream in, String charsetName) 
        
//方法
 void close() 
 String getEncoding() 
 int read() 
 int read(char[] cbuf, int offset, int length)      
 boolean ready() 
        
}

类FilterInputStream 
public class FilterInputStream extends InputStream{

//构造函数
protected  FilterInputStream(InputStream in) 

//方法
 ...
 ...
 ...

}

//使用Adapter转换
InputStreamReader streamReader = new InputStreamReader(new FileInputStream(file), "utf-8");  
BufferedReader bfr=new BufferedReader(streamReader);


你可能感兴趣的:(Adapter)