裝飾器模式(decorator)
優點:
比靜態繼承更加靈活;缺點:介面和被裝飾的類保持一致,對client無感 ;使用起來就像沒有修飾易用性
可以產生疊加效果; 可以重複修飾乙個物件,也可以使用不同的裝飾器修飾相同的物件,產生疊加效果
可以作為aop的簡單實現,在呼叫被修飾物件之前可以呼叫其他功能
1.產生許多的小物件必要條件2.物件的功能和修飾類相關,不易排錯
3.特別需要注意覆寫equals()和hashcode()
1.被修飾class的最好抽象乙個介面,由修飾類和被修飾類共同實現;(強迫被實現被修飾類的和修飾類統一介面)由被裝飾類抽象出的介面2.修飾類中存放被修飾類的介面成員變數;(方便替換被修飾的類,和被修飾類的方法的呼叫)
package demo.spring.boot.demospringboot;
import org.apache.commons.lang3.stringutils;
import org.junit.test;
import org.slf4j.logger;
import org.slf4j.logge***ctory;
/** * 被修飾類抽象出的介面
*/inte***ce
ibedecoatorred
/** * 被修飾類的實現
*/class
ibedecoatorredimpl
implements
ibedecoatorred
", param);}
@override
public ibedecoatorred setibedecoatorred
(ibedecoatorred ibedecoatorred)
}/**
* **class1 -> 檢查引數
*/class
decoratormodel1
implements
ibedecoatorred
@override
public
void
execute
(string param)}}
/** * **class1 -> 呼叫其他邏輯
*/class
decoratormodel2
implements
ibedecoatorred
/** * 被修飾的方法 --> 和被修飾類的方法保持一致 -> 對client無感
*/@override
public
void
execute
(string param)
//呼叫前處理邏輯
private
void
before()
private
void
after()
}public
class
decorator
}
設計模式4 裝飾器模式Decorator
裝飾器模式屬於 單一職責 模式.在軟體元件的設計中,如果責任劃分不清晰,使用繼承得到的結果,往往是隨著需求的變化,子類急劇膨脹,同時充斥著重複 這是 的bad smell.典型的單一職責模式 decorator,bridge.這兩種模式表現出了很強的 單一職責模式的味道 本文中我們討論decorat...
裝飾器模式 decorator
所有的說明和解釋都在 中有注釋來標明 package mode.decorator 這裡定義乙個介面,在介面中定義我們要執行的操作。以後所有的裝飾器以及我們要裝飾的物件都要實現這個介面。有了這樣的大前提,我們就可以其用 sourcable來定義我們的裝飾器和要裝飾的物件了 public inte c...
裝飾器模式 Decorator
設計原則 1 類應該對擴充套件開發,對修改關閉。特點 1 裝飾物件和真實物件有相同的介面。這樣客戶端物件就可以以和真實物件相同的方式和裝飾物件互動。2 裝飾物件包含乙個真實物件的引用 reference 3 裝飾物件接收所有來自客戶端的請求,它把這些請求 給真實的物件。4 裝飾物件可以在 這些請求之...