詳解,檔案字元流操作中的緩衝區的這種設計模式,我們在使用和查詢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 若需要對操作效率進行提高,加入緩衝技術。通過繼承技術進行功能擴充...