Java 裝飾設計模式

2021-06-22 15:34:30 字數 905 閱讀 9985

裝飾設計模式

將原類進行「裝飾」  將原類的功能進行增強。

對類進行功能增強 也可以使用繼承實現。

繼承與裝飾的區別。

例  乙個寫入流物件。 writer   

下有兩個子類,乙個用於操作文字,乙個用於操作**。

|---textwriter                    |---mediawriter

若需要對操作效率進行提高,加入緩衝技術。  

通過繼承技術進行功能擴充套件。需要對每個子類進行繼承擴充套件。

|---textwriter

|---mediawriter

|---bufferedtextwriter   

|--bufferedmediawriter

這樣就通過繼承完成了功能擴充套件。

但是,如果又增加乙個操作圖形的類  gwriter     又會產生與上面相同體系的子類。

當不斷功能擴充套件,就會導致整個繼承體系越來越臃腫。

因此,可以使用裝飾設計模式

每個子類的功能擴充都是一樣的,都是加入緩衝技術,高效操作。

所以就將緩衝進行封裝,當哪個物件(text、media、g)需要緩衝,就將緩衝和具體的物件相結合。

class buffer extends writer

}---------writer w    多型,可以接受text、media、graph 等writer下的子類

裝飾後的體系為

writer

|---text

用於操作文字

|---media

用於操作**

|--graph

用於操作圖形

|---buffer   

用於提高效率

裝飾比繼承更靈活

特點:裝飾類和被裝飾類必須同屬於乙個介面或父類。

java設計模式 裝飾設計模式

乙個例子 public class main 寫 介面 author admin inte ce coding author admin 基礎學生 class coderstudent implements coding author admin 碼農 對基礎學生寫 進行裝飾公升級 class co...

Java設計模式(裝飾設計模式)

作用 改寫已存在的類的某個方法或某些方法,裝飾設計模式 包裝模式 場景 datasource資料來源連線池,獲取connection後的close不能關閉,而是放入連線池中,就需要使用裝飾者設計模式 口訣 1 編寫乙個類,實現與被包裝類相同的介面。具備相同的行為 2 定義乙個被包裝類型別的變數。3 ...

Java 裝飾設計模式

裝飾設計模式是對已經存在的物件增加新的功能,相比繼承不會那麼臃腫 首先定義乙個介面,手機最基本的功能打 public inte ce mobile 定義抽象的裝飾類實現mobile介面 public abstract class mobiledecorate implements mobile ov...