設計模式之裝飾者模式

2021-08-17 21:15:49 字數 1067 閱讀 3636

裝飾者模式:定義是在不改變原物件功能的情況下,動態的給原物件新增新功能,相比於通過繼承來擴充套件功能要靈活的多。

設計理念是:定義乙個裝飾者對原物件的乙個封裝

要點是:裝飾者和被裝飾者(需要被擴充套件功能的原物件)都有乙個共同的超類,繼承的是型別,而不是方法的複製

包含的角色:

抽象被裝飾者:裝飾者和被裝飾者的共同超類,定義了具體被裝飾者的公共行為。

具體被裝飾者:繼承抽象被裝飾者,實現抽象被裝飾者的公共方法

抽象裝飾者:乙個抽象類,也繼承抽象被裝飾者,繼承的是型別,使裝飾者和被裝飾者處於乙個型別下

具體裝飾者:繼承了抽象裝飾者,給被裝飾者時新增新功能

先來圖簡單說明下:醜了點,將就下

上**:

抽象被裝飾者,基類

public inte***ce phone
具體被裝飾者

public class aphone implements phone 

}

抽象裝飾者

public abstract class decorator implements phone

}

具體裝飾者

public class aphonedecorator extends decorator 

//新增個發簡訊功能

public void gongneng()

}public class bphonedecorator extends decorator

//給手機擴充套件乙個上網功能

public void gongneng()

}

測試

public static void main(string args)
結果

能打**

能上網能發簡訊

設計模式之 裝飾者模式

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

設計模式之裝飾者模式

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

設計模式之裝飾者模式

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