設計模式之裝飾者模式

2021-10-06 19:24:02 字數 741 閱讀 1303

裝飾者模式簡單來說,就是在不改變原有類及類的繼承關係下,動態擴充套件乙個類的功能,通過裝飾者來包裹真實的物件,並動態的向物件新增或者撤銷功能

優點是:比靜態繼承(多重繼承)更靈活、避免在層次結構高層的類有太多的特徵。可以定義乙個簡單的類,並且用decorator類給它逐漸地新增功能。可以從簡單的部件組合出複雜的功能。

缺點是:有許多小物件。這些物件僅僅在他們相互連線的方式上有所不同。

適用場景;在不影響其他物件的情況下,以動態、透明的方式給單個物件新增職責、處理那些可以撤銷的職責、當不能採用生成子類的方法進行擴充時。

下面我們看下具體的**

介面:

public

inte***ce

tractor

實現類:

public

class

carimplements

teactor

}

裝飾者類:

public

class

turck

implements

teactor

@oberride

public

void

createtractor()

}

test:

public

class

test

}

設計模式之 裝飾者模式

一 裝飾者模式 裝飾者模式又稱為包裝模式。動態地給乙個物件增加新的職責。若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。裝飾者模式顧名思義就是對乙個物件進行裝飾,具體怎樣裝飾呢?那就是給這個物件不斷的增加職責方法。給乙個物件增加方法不簡單啊,用繼承或者直接在物件的類中增加方法。如果我們要對自...

設計模式之裝飾者模式

此模式動態將職責附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更具彈性的代替方案,以一圖一概括。要點1 裝飾者和被裝飾物件有相同的超型別。2 可以用乙個或多個裝飾者包裝乙個物件。3 裝飾者可以在所委託被裝飾者的行為之前或之後,加上自己的行為,以達到特定的目的。4 物件可以在任何時候被裝飾,所以可...

設計模式之裝飾者模式

public abstract class beverage 返回當前飲品的 public abstract double cost 為了讓condiment decorator 調料裝飾者 能夠取代beverage,所以將它擴充套件至beverage類 public abstract class ...