91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

裝飾器模式是什么意思

發布時間:2021-06-24 14:51:47 來源:億速云 閱讀:151 作者:chen 欄目:大數據

本篇內容主要講解“裝飾器模式是什么意思”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“裝飾器模式是什么意思”吧!

裝飾器(Decorator)模式指在不改變現有對象結構的情況下,動態地給該對象增加一些職責(即增加其額外功能)的模式,它屬于對象結構型模式。采用裝飾模式擴展對象的功能比采用繼承方式更加靈活;可以設計出多個不同的具體裝飾類,創造出多個不同行為的組合。但是裝飾模式增加了許多子類,如果過度使用會使程序變得很復雜。

模式結構

裝飾器模式的角色如下:

  • 頂層接口

  • 被裝飾者

  • 裝飾器抽象類

  • 裝飾器

源碼導讀

裝飾器模式使用的典型就是io流了,前面適配器模式我們說到過io流使用了適配器模式,用于字節流轉換到字符流;裝飾器模式在io流中也是一個很經典的使用。其使用的地方就是給流裝飾上緩存。以輸入流為例, BufferedInputStream 就是對FileInputStream的裝飾,我們看一下這段代碼:

    String file = "out.txt";    
    InputStream ins = new FileInputStream(file);
     BufferedInputStream bufin= new BufferedInputStream(ins);
     int b;
     while((b=bufin.read())!=-1){
         System.out.println(Integer.toHexString(b));
    }

BufferedInputStream 源碼:

public class BufferedInputStream extends FilterInputStream {
    
     public BufferedInputStream(InputStream in) {
        this(in, DEFAULT_BUFFER_SIZE);
    }
    ......
    public synchronized int read(byte b[], int off, int len) throws IOException{
        ......
    }
}

它繼承了FilterInputStream,而 FilterInputStream 繼承了 InputStreamFileInputStream也繼承了InputStream 。 所以這里的角色關系為 InputStream 是頂層類(接口),FileInputStream 是被裝飾類,BufferedInputStream 是裝飾類。BufferedInputStreamFileInputStreamInputStream繼承過來的方法進行了裝飾,這里的。FilterInputStream占據的角色是裝飾器抽象類,但其并不是個抽象類;這并不影響我們對其模式的理解。

到此,相信大家對“裝飾器模式是什么意思”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!

向AI問一下細節

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

AI

偃师市| 邢台县| 武威市| 临猗县| 乐都县| 繁昌县| 遂溪县| 潜江市| 贵阳市| 刚察县| 昆山市| 高州市| 禹州市| 怀化市| 独山县| 浙江省| 新安县| 霍林郭勒市| 马山县| 志丹县| 和顺县| 浦江县| 平定县| 体育| 朝阳区| 宁夏| 镇平县| 琼结县| 兴安县| 翼城县| 平乡县| 资阳市| 闵行区| 阳东县| 寻甸| 壤塘县| 临猗县| 耒阳市| 双鸭山市| 隆尧县| 新巴尔虎右旗|