裝飾模式
定義:以對(duì)客戶(hù)端透明的方式擴(kuò)展對(duì)象的功能,是繼承關(guān)系的一個(gè)替代方案。
裝飾模式的構(gòu)件包括抽象構(gòu)件、具體構(gòu)件、抽象裝飾、具體裝飾。對(duì)于透明的裝飾模式,客戶(hù)端面向抽象構(gòu)件編程,所以是透明的(對(duì)所有的裝飾視而不見(jiàn))。對(duì)半透明的裝飾模式,客戶(hù)端面向具體裝飾編程,因?yàn)橐褂镁唧w裝飾的特殊方法(不在抽象構(gòu)件和抽象裝飾里面),無(wú)法實(shí)現(xiàn)完全透明。
?
裝飾模式的原理是逐層包裹并加入新功能。把地球結(jié)構(gòu)想象成裝飾模式,內(nèi)核就是具體構(gòu)件,外核、地幔等就是具體裝飾。
?
裝飾模式的應(yīng)用場(chǎng)景:
(1)需要擴(kuò)展類(lèi)的功能或增加附加責(zé)任。
(2)需要?jiǎng)討B(tài)給對(duì)象增加功能,這些功能也可以動(dòng)態(tài)撤銷(xiāo)。
(3)需要通過(guò)基本功能的排列組合產(chǎn)生大量功能。繼承體系無(wú)法實(shí)現(xiàn)這一點(diǎn),因?yàn)槔^承關(guān)系是靜態(tài)的,無(wú)法動(dòng)態(tài)組合,這一點(diǎn)正是裝飾模式的優(yōu)點(diǎn)。?
?
裝飾模式與適配器模式的區(qū)別:
適配器模式是改變接口不改變功能。裝飾模式是不改變接口(因?yàn)閷?duì)客戶(hù)端透明),而改變功能(因?yàn)橹饘蛹尤牍δ埽?
裝飾模式與策略模式的區(qū)別:
裝飾模式雖然逐層加入新功能,但是內(nèi)心的功能不會(huì)改變。策略模式會(huì)把內(nèi)心的功能(具體算法)整個(gè)替換。
裝飾模式與合成模式的關(guān)系:
裝飾模式經(jīng)常用在合成模式的行為擴(kuò)展上。因?yàn)槭褂美^承對(duì)于合成模式來(lái)說(shuō)不是好辦法,而裝飾模式是繼承模式的替代方案。
?
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元

