一、什麼是裝飾設計模式?
裝飾模式是在不必改變原類檔案和使用繼續的情況下,動態的擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是通過裝飾來包裹真實的物件。
二、裝飾模式的特點:
(1) 裝飾物件和真實物件有相同的介面。這樣客戶端物件就可以以和真實物件相同的方式和裝飾物件互動。
(2) 裝飾物件包含乙個真實物件的索引(reference)
(3) 裝飾物件接受所有的來自客戶端的請求。它把這些請求**給真實的物件。
(4) 裝飾物件可以在**這些請求以前或以後增加一些附加功能。這樣就確保了在執行時,不用修改給定物件的結構就可以在外部增加附加的功能。在物件導向的設計中,通常是通過繼續來實現對給定類的功能擴充套件。
自定義**示例:
/*需求:通過自定義的緩衝流,讀取乙個文字檔案的資料。自定義類要求實現對bufferedreader類的裝飾。
即在自定義類中定義乙個一次讀取一行文字內容的方法 myreadline();
把讀取到的資料顯示到控制台上。
注意:在windows系統下的換行符是/r/n。*/
三、裝飾模式與繼承的比較:
繼承:用來擴充套件特定物件的功能,需要子類,靜態地,編譯時分派職責, 導致很多子類產生,在一些場合,報漏類的層次,缺乏靈活性
相比而言,在寫繼承時,要多考慮是否能夠用裝飾模式讓**更簡潔、優化。
設計模式之二裝飾者模式
一 概述 1.什麼是裝飾者模式?在不修改類,不使用繼承的前提下,用乙個物件來裝飾另乙個物件,以擴充套件目標物件的功能。2.裝飾者模式的作用 繼承也可以擴充套件類的功能,裝飾者模式比繼承更加靈活,因為繼承時子類受父類的約束,比如子類 方法不能降低訪問許可權,返回值必須是父類方法返回值的子類,而裝飾模式...
java設計模式之二工廠模式
工廠模式主要用一下幾種形態 1 簡單工廠 factory 2 工廠方法 factory method 3 抽象工廠 abstract factory 又叫靜態工廠,是工廠模式三中狀態中結構最為簡單的。主要有乙個靜態方法,用來接受引數,並根據引數來決定返回實現同一介面的不同類的例項。我們來看乙個具體的...
Java 設計模式(二) 裝飾者模式
一 簡介 裝飾者模式要求有乙個被裝飾物件及多個裝飾者,每個裝飾者與被裝飾者實現同乙個介面或有同乙個超類,被裝飾者持有乙個裝飾者物件,所有實現由持有物件完成,裝飾者則在方法執行過程中增強方法實現 如 在方法執行前進行許可權驗證,在返回結果前進行加密處理等 二 示例 要求 商家活動要求商品具有多種打折方...