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

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

“HeadFirst設(shè)計(jì)模式“:裝飾模式

裝飾模式

創(chuàng)新互聯(lián)網(wǎng)站建設(shè)服務(wù)商,為中小企業(yè)提供網(wǎng)站制作、成都網(wǎng)站建設(shè)服務(wù),網(wǎng)站設(shè)計(jì),網(wǎng)站托管運(yùn)營等一站式綜合服務(wù)型公司,專業(yè)打造企業(yè)形象網(wǎng)站,讓您在眾多競爭對(duì)手中脫穎而出創(chuàng)新互聯(lián)。


    裝飾者模式:動(dòng)態(tài)地將責(zé)任附加到對(duì)象上。若要擴(kuò)展功能,裝飾者提供了比繼承更有彈性的替代方案。

    裝修模式的角色如下:

    • 抽象構(gòu)件角色(Component):給出一個(gè)抽象接口,以規(guī)范準(zhǔn)備接收附加責(zé)任的對(duì)象。

    • 具體構(gòu)件角色(Concrete Component):定義將要接收附加責(zé)任的類。

    • 裝飾角色(Decorator):持有一個(gè)構(gòu)件(Component)對(duì)象的引用,并定義一個(gè)與抽象構(gòu)件接口一致的接口。

    • 具體裝飾角色(Concrete Decorator):負(fù)責(zé)給構(gòu)件對(duì)象“貼上”附加的責(zé)任。類圖如下:

“Head First 設(shè)計(jì)模式“ :裝飾模式“Head First 設(shè)計(jì)模式“ :裝飾模式

    

    裝修模式的特點(diǎn):

    • 裝飾對(duì)象和真實(shí)對(duì)象有相同的接口。這樣客戶端對(duì)象就可以以和真實(shí)對(duì)象相同的方式和裝飾對(duì)象交互。

    • 裝飾對(duì)象包含一個(gè)真實(shí)對(duì)象的引用(reference)。

    • 裝飾對(duì)象接收所有來自客戶端的請(qǐng)求,它把這些請(qǐng)求轉(zhuǎn)發(fā)給真實(shí)的對(duì)象。

    • 裝飾對(duì)象可以在轉(zhuǎn)發(fā)這些請(qǐng)求之前或之后附加一些功能。

    • 這樣就確保了在運(yùn)行時(shí),不用修改給定對(duì)象的結(jié)構(gòu)就可以在外部增加附加的功能。

    裝修模式的缺點(diǎn):

    • 裝飾模式會(huì)導(dǎo)致設(shè)計(jì)中出現(xiàn)許多小類,如果過度使用,會(huì)使程序變得很復(fù)雜。

    • 裝飾模式是針對(duì)抽象組件(Component)類型編程。但是,如果你要針對(duì)具體組件編程時(shí),就應(yīng)該重新思考你的應(yīng)用架構(gòu),以及裝飾者是否合適。當(dāng)然也可以改變Component接口,增加新的公開的行為,實(shí)現(xiàn)“半透明”的裝飾者模式。在實(shí)際項(xiàng)目中要做出較佳選擇。

    

    裝飾模式的使用場(chǎng)景:

    • 適合對(duì)默認(rèn)目標(biāo)實(shí)現(xiàn)中的多個(gè)接口進(jìn)行排列組合調(diào)度

    • 適合對(duì)默認(rèn)目標(biāo)實(shí)現(xiàn)進(jìn)行選擇性擴(kuò)展

    • 適合對(duì)默認(rèn)目標(biāo)實(shí)現(xiàn)未知或者不易擴(kuò)展的情況。


    實(shí)例1:咖啡店有好幾種咖啡,每一種都是自己的價(jià)格,成分等,類圖如下;

“Head First 設(shè)計(jì)模式“ :裝飾模式“Head First 設(shè)計(jì)模式“ :裝飾模式

    問題的產(chǎn)生:咖啡可以放些糖等調(diào)料,調(diào)料種類多,新增了N個(gè)子類來對(duì)應(yīng)咖啡,價(jià)格,調(diào)料之間的關(guān)系,后期維護(hù)有了很大的挑戰(zhàn),類圖如下:

“Head First 設(shè)計(jì)模式“ :裝飾模式“Head First 設(shè)計(jì)模式“ :裝飾模式

    

    解決:我們可以用裝飾模式來解決,最終的類圖如下:

“Head First 設(shè)計(jì)模式“ :裝飾模式“Head First 設(shè)計(jì)模式“ :裝飾模式

    

    實(shí)例2:擴(kuò)展JAVA里的I/O,讀取文件里的數(shù)據(jù),并轉(zhuǎn)成大寫字母輸出

    分析:JDK里I/O框架用到了適配器模式,類圖如下:

“Head First 設(shè)計(jì)模式“ :裝飾模式“Head First 設(shè)計(jì)模式“ :裝飾模式

    說明:抽象構(gòu)建角色(InputStream),裝飾角色(FilterInputStream),具體裝飾(BufferdInputStream等),具體構(gòu)建角色(FileInputStream等)

    實(shí)現(xiàn):我們看類圖,我們繼承FilterInputStream,覆蓋掉read方法就能滿足這個(gè)需求了。

    設(shè)計(jì)原則:類應(yīng)該對(duì)擴(kuò)展開放,對(duì)修改關(guān)閉。


新聞標(biāo)題:“HeadFirst設(shè)計(jì)模式“:裝飾模式
網(wǎng)站URL:http://weahome.cn/article/pjdssi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部