裝飾者模式的定義是動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé)骂远。就增加功能來(lái)說(shuō)挎扰,裝飾者模式比生成子類更加靈活翠订。
通常給一個(gè)對(duì)象增加功能,可以直接修改對(duì)象類增加功能遵倦,又或者是使用繼承尽超,在派生類上添加新功能,還可以是對(duì)象組合的方式梧躺。首先直接修改對(duì)象似谁,顯然是一種不可取的方式,在面向?qū)ο蟮脑O(shè)計(jì)中掠哥,我們應(yīng)該優(yōu)先使用對(duì)象組合而不是繼承巩踏。裝飾器模式就是基于對(duì)象組合的一種方式。
模式主要構(gòu)成:
1续搀、抽象構(gòu)件
主要用來(lái)規(guī)范對(duì)象
2塞琼、具體構(gòu)件
準(zhǔn)備接受裝飾的對(duì)象
3、裝飾構(gòu)件
持有一個(gè)構(gòu)件對(duì)象以及含有抽象構(gòu)件的相同的行為
4目代、具體裝飾構(gòu)件
給構(gòu)件對(duì)象增加新功能
具體實(shí)現(xiàn)如下:
抽象構(gòu)件 --海賊王船長(zhǎng)類
具體構(gòu)件 --具體船長(zhǎng)
裝飾構(gòu)件 -- 船長(zhǎng)裝飾類
具體裝飾構(gòu)件 見聞式霸氣 以及武裝式霸氣
客戶端調(diào)用如下
以上就是裝飾者模式的應(yīng)用屈梁,在實(shí)際的應(yīng)用上我覺(jué)得可以靈活使用。根據(jù)真實(shí)情況榛了,其中可以選擇讓船長(zhǎng)裝飾類繼承具體船長(zhǎng)在讶,可以不需要海賊王船長(zhǎng)類。簡(jiǎn)單地提下上面的例子霜大,首先從客戶端上的調(diào)用我們可以看出构哺,一個(gè)船長(zhǎng)他可能會(huì)使用見聞式霸氣,又或者是武裝式霸氣战坤,或者兩者都會(huì)使用曙强,當(dāng)然想成為海賊王,必須的兩種都運(yùn)用的爐火純青途茫,可以看出來(lái)碟嘴,一個(gè)船長(zhǎng)隨著成長(zhǎng),我們可以動(dòng)態(tài)地給他添加新能力囊卜,也可以動(dòng)態(tài)地撤銷掉娜扇。
裝飾者模式的優(yōu)點(diǎn):
1、比起繼承的方式拓展功能的方式栅组,更加的靈活雀瓢,可以動(dòng)態(tài)地去添加去掉額外的功能。 2玉掸、通過(guò)不同的組合方式刃麸,可以創(chuàng)造出多種不同的組合,功能多種司浪。
裝飾者模式的缺點(diǎn)
1泊业、比起繼承的方式,顯然多了不少的子類断傲。增加了系統(tǒng)的復(fù)雜性