4 裝飾器模式 Decorator

2021-09-28 01:43:57 字數 1599 閱讀 9815

裝飾器模式(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 裝飾物件可以在 這些請求之...