真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

裝飾者模式-創(chuàng)新互聯(lián)

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

我們提供的服務(wù)有:成都網(wǎng)站建設(shè)、成都做網(wǎng)站、微信公眾號開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認證、興賓ssl等。為上千家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的興賓網(wǎng)站制作公司
BufferedReader br = new BufferedReader(InputStreamReader(new InputSteam()));

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

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

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

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

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

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

public interface Wapper {
    public String say();
}

2)被裝飾者實現(xiàn)接口

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

3)裝飾者繼承被裝飾者
內(nèi)層裝飾者

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

外層裝飾者

public class OuterDecorator extends WapperImpl{
    private Wapper wapper; //向上轉(zhuǎn)型,支持內(nèi)層裝飾者多樣化
    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) {
        //實現(xiàn)new OuterDecorator(new InnerDecorator(new Object())),完成輸出“外層裝飾(內(nèi)層裝飾(被裝飾對象))”
        OuterDecorator od = new OuterDecorator(new InnerDecorator(new WapperImpl()));
        System.out.println(od.say());
    }
}

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

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

public class HttpServletRequestWrapper extends ServletRequestWrapper implements HttpServletRequest

可以看見它實現(xiàn)了HttpServletRequest接口

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

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

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準確進行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。


當前標題:裝飾者模式-創(chuàng)新互聯(lián)
文章轉(zhuǎn)載:http://weahome.cn/article/dicosj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部