Java是一门面向对象的编程语言,面向对象一个重要特征就是多态,提倡面向接口或抽象类编程。
设计接口或抽象类的目的主要是为了方便扩展,对于一些经常使用到的实现,我们就可以提供一个默认实现。
比如我们设计一个网络请求框架的时候,希望可以把请求到的数据流交由用户去处理,到底是转换为String,还是byte,还是其他JavaBean...等等。
但是大部分情况,用户都是希望返回字符串,所以我们就可以这样设计。
设计一个数据解析接口,用来解析网络请求数据
public interface DataParser<T> {
/**
* 解析数据
* @param data 网络请求返回的数据流
* @return
* @throws Exception
*/
T parse(InputStream data) throws Exception;
// 默认的String解析器
DataParser<String> STRING_PARSER = new DataParser<String>() {
@Override
public String parse(InputStream data) throws Exception {
if (null == data)
return null;
BufferedReader br = null;
StringBuffer sb = new StringBuffer();
try {
br = new BufferedReader(new InputStreamReader(data));
String line = null;
while (((line = br.readLine()) != null)) {
sb.append(line);
}
} finally {
if (null != br)
br.close();
}
return sb.toString();
}
};
}