/* 裝飾設計模式: 當想要對已有的對象進行功能增強時, 可以定義類,將已有對象傳入,基於已有的功能,並提供加強功能。 那么自定義的該類稱為裝飾類。 裝飾類通常會通過構造方法接收被裝飾的對象。 並基於被裝飾的對象的功能,提供更強的功能。 裝飾和繼承 MyReader//專門用於讀取數據的類。 |--MyTextReader |--MyBufferTextReader |--MyMediaReader |--MyBufferMediaReader |--MyDataReader |--MyBufferDataReader class MyBufferReader { MyBufferReader(MyTextReader text) {} MyBufferReader(MyMediaReader media) {} } 上面這個類擴展性很差。 找到其參數的共同類型。通過多態的形式。可以提高擴展性。 class MyBufferReader extends MyReader { private MyReader r; MyBufferReader(MyReader r) {} } MyReader//專門用於讀取數據的類。 |--MyTextReader |--MyMediaReader |--MyDataReader |--MyBufferReader//裝飾類 以前是通過繼承將每一個子類都具備緩沖功能。 那么繼承體系會復雜,並不利於擴展。 現在優化思想。單獨描述一下緩沖內容。 將需要被緩沖的對象。傳遞進來。也就是,誰需要被緩沖,誰就作為參數傳遞給緩沖區。 這樣繼承體系就變得很簡單。優化了體系結構。 裝飾模式比繼承要靈活。避免了繼承體系臃腫。 而且降低了類於類之間的關系。 裝飾類因為增強已有對象,具備的功能和已有的是相同的,只不過提供了更強功能。 所以裝飾類和被裝飾類通常是都屬於一個體系中的。 */