亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

裝飾者模式

發布時間:2020-06-17 08:19:15 來源:網絡 閱讀:932 作者:toto334 欄目:開發技術

裝飾者模式是什么
裝飾者嗎模式,又叫包裝者模式(wapper)。常見的裝飾者模式有

BufferedReader br = new BufferedReader(InputStreamReader(new InputSteam()));

就是這樣一層嵌套一層,這就是典型的裝飾者模式。其中
new InputStream() 是被裝飾對象
new InputStreamReader() 是內層裝飾者
new BufferedReader() 是外層裝飾者
為什么要用到裝飾者模式
有這么一種情況,在保持核心業務不變的情況下,每添加一層裝飾者,就是給它新增一部分功能。

裝飾者模式理論摘自裝飾模式(Decorator)(包裝器模式(Wrapper))

1)        抽象構件角色(Component):定義一個抽象接口,以規范準備接收附加責任的對象。
2)        具體構件角色(Concrete Component):這是被裝飾者,定義一個將要被裝飾增加功能的類。
3)        裝飾角色(Decorator):持有一個構件對象的實例,并定義了抽象構件定義的接口。
4)        具體裝飾角色(Concrete Decorator):負責給構件添加增加的功能。

概念相當抽象,簡單點說明,就是需要

1)接口
2)被裝飾者實現該接口
3)裝飾者繼承被裝飾者
4)達到new BufferedReader(InputStreamReader(new InputSteam()))這種話樣式

自己寫一個裝飾者模式案例,達到控制臺輸出效果如下
“外層裝飾者(內層裝飾者(被裝飾者))”
1)接口

public interface Wapper {
    public String say();
}

2)被裝飾者實現接口

public class WapperImpl implements Wapper{
    @Override
    public String say() {
        String msg = "被裝飾對象";
        return msg;
    }
}

3)裝飾者繼承被裝飾者
內層裝飾者

public class InnerDecorator extends WapperImpl{
    private Wapper wapper; //支持向上轉型,實現被裝飾者多樣化
    public InnerDecorator(Wapper wapper) {
        this.wapper = wapper;
    }
    public String say() {
        String msg = "內層裝飾者("+wapper.say()+")";
        return msg;
    }
}

外層裝飾者

public class OuterDecorator extends WapperImpl{
    private Wapper wapper; //向上轉型,支持內層裝飾者多樣化
    public OuterDecorator(Wapper wapper) {
        this.wapper = wapper;
    }
    public String say() {
         String msg = "外層裝飾者("+wapper.say()+")";
         return msg;
    }
}

4) 達到new BufferedReader(InputStreamReader(new InputSteam()))這種話樣式
測試類

public class Test {
    public static void main(String[]args) {
        //實現new OuterDecorator(new InnerDecorator(new Object())),完成輸出“外層裝飾(內層裝飾(被裝飾對象))”
        OuterDecorator od = new OuterDecorator(new InnerDecorator(new WapperImpl()));
        System.out.println(od.say());
    }
}

運行一下,打印成功!
裝飾者模式

Spring中的裝飾者模式
HttpServletRequestWrapper就是一個典型的裝飾者模式

public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest 

可以看見它實現了HttpServletRequest接口

public interface HttpServletRequest extends ServletRequest {
...
    String getHeader(String name);
    String getRemoteUser();
    String getRequestedSessionId();
    String getRequestURI();
    StringBuffer getRequestURL();
...
}

那么按上面的講解,HttpServletRequestWrapper就是被裝飾者。
同理,任何繼承了HttpServletRequestWrapper的就是裝飾者。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

海宁市| 龙陵县| 太湖县| 阿瓦提县| 珲春市| 乌什县| 板桥市| 额敏县| 吉木萨尔县| 山东省| 灵石县| 富平县| 老河口市| 探索| 马山县| 家居| 长沙县| 黔西| 阳泉市| 温宿县| 河东区| 桃江县| 四川省| 肥乡县| 平阳县| 郓城县| 扶沟县| 湘潭市| 沅江市| 隆昌县| 黔江区| 光泽县| 木兰县| 板桥市| 普兰县| 林州市| 阿拉善盟| 哈巴河县| 焦作市| 商都县| 汨罗市|