裝飾設計模式使用場景:
當想要對已有的物件進行功能增強時,可以定義類,
將已有物件傳入,基於已有功能,並提供加強功能,
那麼自定義的該類稱為裝飾類。
裝飾類通常會通過構造方法接受被裝飾的物件,
並基於被裝飾物件的功能,提供更強的功能。
裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,
只不過要更強。所以裝飾類和被裝飾類通常是屬於同乙個體系之中的。
裝飾設計模式與繼承
裝飾模式比繼承要靈活,避免了繼承體系的臃腫,
而且減少了類與類之間的關係。
裝飾設計模式的應用舉例:
運用裝飾設計模式,對filerreader物件的功能進行增強
基於read方法,提供乙個讀一行字元方法,寫乙個自己的字元輸出流的緩衝區類(功能其實和bufferedreader相同),
並對異常進行簡單處理。
1class
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 }
裝飾設計模式簡析
裝飾設計模式使用場景 當想要對已有的物件進行功能增強時,可以定義類,將已有物件傳入,基於已有功能,並提供加強功能,那麼自定義的該類稱為裝飾類。裝飾類通常會通過構造方法接受被裝飾的物件,並基於被裝飾物件的功能,提供更強的功能。裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,只不過要更強。所以裝...
裝飾設計模式簡析
裝飾設計模式使用場景 當想要對已有的物件進行功能增強時,可以定義類,將已有物件傳入,基於已有功能,並提供加強功能,那麼自定義的該類稱為裝飾類。裝飾類通常會通過構造方法接受被裝飾的物件,並基於被裝飾物件的功能,提供更強的功能。裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,只不過要更強。所以裝...
裝飾設計模式簡析
裝飾設計模式使用場景 當想要對已有的物件進行功能增強時,可以定義類,將已有物件傳入,基於已有功能,並提供加強功能,那麼自定義的該類稱為裝飾類。裝飾類通常會通過構造方法接受被裝飾的物件,並基於被裝飾物件的功能,提供更強的功能。裝飾類因為增強已有物件,具備的功能和已有的是相同型別的,只不過要更強。所以裝...