本篇內(nèi)容主要講解“裝飾器模式是什么意思”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“裝飾器模式是什么意思”吧!
在鹽田等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計 網(wǎng)站設(shè)計制作按需求定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),成都營銷網(wǎng)站建設(shè),成都外貿(mào)網(wǎng)站制作,鹽田網(wǎng)站建設(shè)費(fèi)用合理。
裝飾器(Decorator)模式指在不改變現(xiàn)有對象結(jié)構(gòu)的情況下,動態(tài)地給該對象增加一些職責(zé)(即增加其額外功能)的模式,它屬于對象結(jié)構(gòu)型模式。采用裝飾模式擴(kuò)展對象的功能比采用繼承方式更加靈活;可以設(shè)計出多個不同的具體裝飾類,創(chuàng)造出多個不同行為的組合。但是裝飾模式增加了許多子類,如果過度使用會使程序變得很復(fù)雜。
裝飾器模式的角色如下:
頂層接口
被裝飾者
裝飾器抽象類
裝飾器
裝飾器模式使用的典型就是io流了,前面適配器模式我們說到過io流使用了適配器模式,用于字節(jié)流轉(zhuǎn)換到字符流;裝飾器模式在io流中也是一個很經(jīng)典的使用。其使用的地方就是給流裝飾上緩存。以輸入流為例, 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
繼承了 InputStream
,FileInputStream
也繼承了InputStream
。 所以這里的角色關(guān)系為 InputStream
是頂層類(接口),FileInputStream
是被裝飾類,BufferedInputStream
是裝飾類。BufferedInputStream
對FileInputStream
從InputStream
繼承過來的方法進(jìn)行了裝飾,這里的。FilterInputStream
占據(jù)的角色是裝飾器抽象類,但其并不是個抽象類;這并不影響我們對其模式的理解。
到此,相信大家對“裝飾器模式是什么意思”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
新聞名稱:裝飾器模式是什么意思
網(wǎng)頁路徑:http://jinyejixie.com/article14/ppiode.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、企業(yè)建站、手機(jī)網(wǎng)站建設(shè)、網(wǎng)站內(nèi)鏈、標(biāo)簽優(yōu)化、網(wǎng)站收錄
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)