設計模式之美17 裝飾器模式

2021-10-09 05:15:16 字數 900 閱讀 9970

**裝飾器模式主要解決繼承關係過於複雜的問題,通過組合來替代繼承。它主要的作用是給原始類新增增強功能。這也是判斷是否該用裝飾器模式的乙個重要的依據。**除此之外,裝飾器模式還有乙個特點,那就是可以對原始類巢狀使用多個裝飾器。為了滿足這個應用場景,在設計的時候,裝飾器類需要跟原始類繼承相同的抽象類或者介面。

1.**模式和裝飾者模式都是 **增強這一件事的落地方案。前者個人認為偏重業務無關,高度抽象,和穩定性較高的場景(效能其實可以拋開不談)。後者偏重業務相關,定製化訴求高,改動較頻繁的場景。

2.快取這件事一般都是高度抽象,全業務通用,基本不會改動的東西,所以一般也是採用**模式,讓業務開發從快取**的重複勞動中解放出來。但如果當前業務的快取實現需要特殊化定製,需要揉入業務屬性,那麼就該採用裝飾者模式。

因為其定製性強,其他業務也用不著,而且業務是頻繁變動的,所以改動的可能也大,相對於動代,裝飾者在調整(修改和重組)**這件事上顯得更靈活。

你是乙個優秀的歌手,只會唱歌這一件事,不擅長找演唱機會,談價錢,搭台,這些事情你可以找乙個經紀人幫你搞定,經紀人幫你做好這些事情你就可以安穩的唱歌了,讓經紀人做你不關心的事情這叫**模式。

你老愛記錯歌詞,歌迷和**經常吐槽你沒有認真對待演唱會,於是你想了乙個辦法,買個高階耳機,邊唱邊提醒你歌詞,讓你擺脫了忘歌詞的詬病,高階耳機讓你唱歌能力增強,提高了基礎能力這叫裝飾者模式。

需要實現相同的介面

public

inte***ce

iapublic

class

a impelements ia

}public

class

adecorator impements ia

public

voidf(

)}}

設計模式之裝飾器模式

定義 decorator裝飾器,顧名思義,就是動態地給乙個物件新增一些額外的職責,就好比為房子進行裝修一樣。因此,裝飾器模式具有如下的特徵 它必須具有乙個裝飾的物件。它必須擁有與被裝飾物件相同的介面。它可以給被裝飾物件新增額外的功能。用一句話總結就是 保持介面,增強效能。裝飾器通過包裝乙個裝飾物件來...

設計模式之裝飾器模式

什麼是裝飾器模式 decorator 裝飾器模式的優點 裝飾器模式的缺點 示例 package com.pattern.decorator 抽象類,裝飾器的父類 author yjzhou public abstract class decorator implements component ov...

設計模式之裝飾器模式

裝飾模式 decorator 顧名思義,裝飾模式就是給乙個物件增加一些新的功能,而且是動態的,要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項,關係圖如下 source類是被裝飾類,decorator類是乙個裝飾類,可以為source類動態的新增一些功能,如下 1.public ...