裝飾設計模式簡析

2021-07-27 08:37:43 字數 1262 閱讀 2097

裝飾設計模式使用場景

當想要對已有的物件進行功能增強時,可以定義類,

將已有物件傳入,基於已有功能,並提供加強功能,

那麼自定義的該類稱為裝飾類。

裝飾類通常會通過構造方法接受被裝飾的物件,

並基於被裝飾物件的功能,提供更強的功能。

裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,

只不過要更強。所以裝飾類和被裝飾類通常是屬於同乙個體系之中的。

裝飾設計模式與繼承

裝飾模式比繼承要靈活,避免了繼承體系的臃腫,

而且減少了類與類之間的關係。

裝飾設計模式的應用舉例:

運用裝飾設計模式,對filerreader物件的功能進行增強

基於read方法,提供乙個讀一行字元方法,寫乙個自己的字元輸出流的緩衝區類(功能其實和bufferedreader相同),

並對異常進行簡單處理。

1

class

mybufferedreader28

public string myreadline()throws ioexception//

宣告異常,誰呼叫,誰解決923

//防止因為檔案末尾缺少'\n'而漏讀

24if(sb.length()!=0)

25return

sb.tostring();

26return

null;27

28}2930

//關閉輸出流的緩衝區物件,實際執行的操作就是關閉輸出流

31public

void mybufclose()throws ioexception//

宣告異常,誰呼叫,誰解決

3235}36

37/*

38測試mybufferedreader的功能,用其讀取當前目錄下的buffered.txt檔案,

39並列印在控制台上。

40*/

41public

class

mybufferedreadertest

425556}

57catch

(ioexception e)

5861

//在finally塊中關閉流

62finally

6370

catch

(ioexception e)

7174}75

}76 }

裝飾設計模式簡析

裝飾設計模式使用場景 當想要對已有的物件進行功能增強時,可以定義類,將已有物件傳入,基於已有功能,並提供加強功能,那麼自定義的該類稱為裝飾類。裝飾類通常會通過構造方法接受被裝飾的物件,並基於被裝飾物件的功能,提供更強的功能。裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,只不過要更強。所以裝...

裝飾設計模式簡析

裝飾設計模式使用場景 當想要對已有的物件進行功能增強時,可以定義類,將已有物件傳入,基於已有功能,並提供加強功能,那麼自定義的該類稱為裝飾類。裝飾類通常會通過構造方法接受被裝飾的物件,並基於被裝飾物件的功能,提供更強的功能。裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,只不過要更強。所以裝...

裝飾設計模式簡析

裝飾設計模式使用場景 當想要對已有的物件進行功能增強時,可以定義類,將已有物件傳入,基於已有功能,並提供加強功能,那麼自定義的該類稱為裝飾類。裝飾類通常會通過構造方法接受被裝飾的物件,並基於被裝飾物件的功能,提供更強的功能。裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,只不過要更強。所以裝...