java設計模式 裝飾設計模式

2021-08-19 15:17:26 字數 1265 閱讀 1822

乙個例子:

public class main 

}/**

* 寫**介面

* @author admin

* */

inte***ce coding

/** *

* @author admin

* 基礎學生

* */

class coderstudent implements coding }

/** *

* @author admin

*碼農 對基礎學生寫**進行裝飾公升級

*/class coderworker implements coding

/*** 3、功能公升級

*/@override

public void writecode()

}

定義:       

裝飾模式指的是在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能。它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。

特點:(1) 裝飾物件和真實物件有相同的介面。這樣客戶端物件就能以和真實物件相同的方式和裝飾物件互動。

(2) 裝飾物件包含乙個真實物件的引用(reference)

(3) 裝飾物件接受所有來自客戶端的請求。它把這些請求**給真實的物件。

(4) 裝飾物件可以在**這些請求以前或以後增加一些附加功能。這樣就確保了在執行時,不用修改給定物件的結構就可以在外部增加附加的功能。在物件導向的設計中,通常是通過繼承來實現對給定類的功能擴充套件。

優點:1. decorator模式與繼承關係的目的都是要擴充套件物件的功能,但是decorator可以提供比繼承更多的靈活性。

2. 通過使用不同的具體裝飾類以及這些裝飾類的排列組合,設計師可以創造出很多不同行為的組合。

缺點:1. 這種比繼承更加靈活機動的特性,也同時意味著更加多的複雜性。

2. 裝飾模式會導致設計中出現許多小類,如果過度使用,會使程式變得很複雜。

3. 裝飾模式是針對抽象元件(component)型別程式設計。但是,如果你要針對具體元件程式設計時,就應該重新思考你的應用架構,以及裝飾者是否合適。當然也可以改變component介面,增加新的公開的行為,實現「半透明」的裝飾者模式。在實際專案中要做出最佳選擇。

設計原則:

1. 多用組合,少用繼承。

利用繼承設計子類的行為,是在編譯時靜態決定的,而且所有的子類都會繼承到相同的行為。然而,如果能夠利用組合的做法擴充套件物件的行為,就可以在執行時動態地進行擴充套件。

2. 類應設計的對擴充套件開放,對修改關閉。

Java設計模式(裝飾設計模式)

作用 改寫已存在的類的某個方法或某些方法,裝飾設計模式 包裝模式 場景 datasource資料來源連線池,獲取connection後的close不能關閉,而是放入連線池中,就需要使用裝飾者設計模式 口訣 1 編寫乙個類,實現與被包裝類相同的介面。具備相同的行為 2 定義乙個被包裝類型別的變數。3 ...

Java 設計模式 裝飾模式

看了大話設計模式此章節多遍才稍微有點理解,特此記錄。深入淺出,通俗易懂。情景 小菜要去見未來女友 嬌嬌,來個服裝打扮的設計。第一彈 客戶端 public static void main string args 問題來了,嬌嬌喜歡超人,小菜這次想穿的是超人,咋辦?直接修改小菜的類嗎?這就違背了開閉原...

java設計模式 裝飾模式

什麼是裝飾模式 裝飾模式就是動態的為乙個物件新增新的功能,它是一種代替繼承的技術,毋須通過繼承增加子類就能拓展物件功能的模式。開發中應用場景 1.io流中,設計的輸入和輸出 2.servlet api提供的乙個re quest物件的decrator模式的預設實現類httpservletrequest...