Java 裝飾設計模式

2021-08-28 17:57:31 字數 1179 閱讀 3338

詳解,檔案字元流操作中的緩衝區的這種設計模式,我們在使用和查詢api時,看見他們的繼承關係,總覺得很奇怪,其實這是一種設計模式——裝飾設計模式

假設現在有連個讀取類:

textreader :讀取文字

mediareader : 讀取多**

抽取他們的共性:形成體系

reader

|----- textreader

|-----mediareader

現在的需求:

提高讀取文字的效率,使用緩衝技術,提供一種更高效的讀取方式:

覆蓋textreader 中的方法,建立更高效的read 方法

reader

|-----textreader

|-----子類(重寫read 方法)

|-----mediareader

|------

如果reader 有更多的讀取子類,而每個類都需要這樣的提高效率的方法,那麼,繼承的體系將會十分對的臃腫(這是十分不建議的)

抽取所有為提高效率的子類的共性————————這些子類都是需要高效,而且這高效的實現方法都是一樣的。都是提供乙個緩衝區,所以沒有必要每乙個物件都存在乙個有這樣功能重複的子類

將高效抽取:具備緩衝區,重寫乙個高效的read 方法

那個類需要這個高效的方法,就將那個類傳進來

class  bufferedreader//建構函式接受被裝飾的類

//重寫read 方法——————因為還是具備讀這個方法,所以這個類還是reader 的乙個子類

}

所以最後的繼承體系是:

reader

|-----textreader

|-----mediareader

|-----bufferedreader

這種設計減少了繼承體系的臃腫,增加了功能,是這個體系更加的靈活這就是裝飾設計模式

解決的問題:給一組類增加乙個共性功能,同時避免臃腫

注意:裝飾類和被裝飾類必須屬於同乙個體系,通常裝飾類都會提供建構函式接受被裝飾的物件

裝飾類不會單獨存在,因為他是為裝飾其他類而存在的

裝飾類的出現只是為了給物件增加功能,物件還是原來的物件,只是加了乙個馬甲

舉個例子幫助理解:

乙個人要今天要走嘻哈風,那麼給他穿一件嘻哈的外套,他就嘻哈了

//這是繼單例設計模式之後的又一設計模式

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 裝飾設計模式

裝飾設計模式 將原類進行 裝飾 將原類的功能進行增強。對類進行功能增強 也可以使用繼承實現。繼承與裝飾的區別。例 乙個寫入流物件。writer 下有兩個子類,乙個用於操作文字,乙個用於操作 textwriter mediawriter 若需要對操作效率進行提高,加入緩衝技術。通過繼承技術進行功能擴充...