设计模式之装饰者模式 - Decorator

装饰者模式和代理模式的区别

装饰者模式的作用是扩展一个类的功能.
代理模式的作用是控制对一个类的对象的访问, 但并不去扩展它的功能.

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.-----

你可能感兴趣的:(设计模式之装饰者模式 - Decorator)