設計模式之 裝飾者模式

2021-09-01 12:41:38 字數 1214 閱讀 8372

裝飾著模式:簡單的一句話理解就是,動態的給乙個物件新增一些額外的功能,裝飾者模式相對於生成子類更加的靈活。

我們來看下裝飾者模式的uml圖:

業務場景:現我們現在模擬這樣乙個場景,我們點了一杯奶茶,然後給奶茶中加了冰塊,加了珍珠,最後我們還想再給加點紅豆,這裡加紅豆就使用了裝飾者。

我們下來建立乙個奶茶的抽象類,想到於component

public inte***ce milkytea
我們再來建立要給奶茶的具體子類,相當於concretecomponent

public class milkyteaa implements milkytea 

}

接下來建立乙個裝飾類,相當於decorator

public class decorator implements milkytea 

@override

public void recipe() 

}

建立裝飾類的子類,新增珍珠,相當於concretedecorator

public class milkyteaadecorator extends decorator 

// 加珍珠

public void recipezz() 

}

建立裝飾者的子類,新增紅豆,相當於concretedecorator

public class milkyteabdecorator extends decorator 

public void recipehd() 

}

最後我們測試一下看下結果:

通過這個小例子我們可以發現,裝飾者模式是為了已有的功能動態的新增更多功能的一種方式。

裝飾模式的優點:把類中的裝飾功能從類中搬移去除,這樣可以簡化原有的類;

設計模式之 裝飾者模式

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

設計模式之裝飾者模式

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

設計模式之裝飾者模式

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