設計模式之 裝飾器模式

2021-09-09 05:41:36 字數 1089 閱讀 7096

什麼是裝飾器模式?

裝飾器模式(decorator pattern)允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。

動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。

主要解決

我們在拓展功能時,常常使用增加子類的方式進行,但隨著功能的增加,子類會非常多。

何時使用

在不想增加很多子類的情況下擴充套件類。

動態增加功能,動態撤銷。

uml圖

**實現

建立乙個英雄類 作為介面

abstract class hero

建立乙個具體的打野英雄

class concretehero extends hero

public void jungle();

}

建立乙個野怪類

class monster extends hero

@override

public void jungle()

}}

建立具體的野怪類

class 藍爸爸 extends monster

}class 紅爸爸 extends monster

}class 拉屎男爵 extends monster

}

最後寫上min方法

public static void main(string args)
最後的執行結果是

獲得藍buff

獲得紅buff

獲得大龍buff

廠長獲得了這些buff

設計模式之裝飾器模式

定義 decorator裝飾器,顧名思義,就是動態地給乙個物件新增一些額外的職責,就好比為房子進行裝修一樣。因此,裝飾器模式具有如下的特徵 它必須具有乙個裝飾的物件。它必須擁有與被裝飾物件相同的介面。它可以給被裝飾物件新增額外的功能。用一句話總結就是 保持介面,增強效能。裝飾器通過包裝乙個裝飾物件來...

設計模式之裝飾器模式

什麼是裝飾器模式 decorator 裝飾器模式的優點 裝飾器模式的缺點 示例 package com.pattern.decorator 抽象類,裝飾器的父類 author yjzhou public abstract class decorator implements component ov...

設計模式之裝飾器模式

裝飾模式 decorator 顧名思義,裝飾模式就是給乙個物件增加一些新的功能,而且是動態的,要求裝飾物件和被裝飾物件實現同乙個介面,裝飾物件持有被裝飾物件的例項,關係圖如下 source類是被裝飾類,decorator類是乙個裝飾類,可以為source類動態的新增一些功能,如下 1.public ...