设计模式之装饰者模式 - Decorator
2017-02-27 本文已影响30人
ahking17
装饰者模式和代理模式的区别
装饰者模式的作用是扩展一个类的功能.
代理模式的作用是控制对一个类的对象的访问, 但并不去扩展它的功能.
IO 框架
最典型的应用场景应该就属java的IO框架了.
例如下面"使用HttpURLConnection下载JSON数据"的代码片段
String serverUrl = "http://ce.sysu.edu.cn/hope/hopedairyjson/Index.aspx";
try {
HttpURLConnection conn = null;
URL url = new URL(serverUrl);
conn = (HttpURLConnection)url.openConnection();
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");
int code = conn.getResponseCode();
if (code == 200) {
jsonString = readStream(conn.getInputStream());
JLog.i("jsonString = " + jsonString);
}
} catch (IOException e) {
e.printStackTrace();
}
private String readStream(InputStream is) {
InputStreamReader isr;
String result= "";
try {
String line = "";
isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
while ((line = br.readLine()) != null) {
result += line;
}
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
BufferedReader修饰了InputStreamReader, 在InputStreamReader的基础上增加了readLine()这个新的功能.
---DONE.-----