結構型設計模式 裝飾器模式

2021-08-17 03:49:57 字數 1024 閱讀 8527

說明:

裝飾器模式

(decorator pattern)允許

向乙個現有的物件新增新的功能,同時又不改變其結構

。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。

這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。

實現方法

1.新建乙個介面

pubic abstract 手機()

2.新建裝飾器類

public abstract 裝飾器:手機

public void setphone(手機 入參手機)

}

3.新建實體類。

public class 蘋果手機:手機

}

4.新建裝飾器

public class 手機殼:裝飾器

}public class 手機膜:裝飾器

}

5.舉例

//乙個蘋果手機

蘋果手機 我的手機= new 蘋果手機();

我的手機.print();

//乙個帶殼的蘋果手機

手機殼 帶殼手機 = new 手機殼();

手機殼.setphone(我的手機);

手機殼.print();

//乙個帶膜的蘋果手機

手機膜 帶膜手機 = new 手機膜();

手機膜.setphone(我的手機);

手機膜.print();

//乙個帶殼又帶膜的蘋果手機

手機膜 帶膜帶殼手機 = new 手機膜();

帶膜帶殼手機.setphone(帶殼手機);

帶膜帶殼手機.print();

結構型設計模式 裝飾模式

裝飾模式動態地給乙個物件新增一些額外的職責,就增加功能來說,它比生成子類更靈活。也可以這樣說,裝飾模式把複雜類中的核心職責和裝飾功能區分開了,這樣既簡化了複雜類,有去除了相關類中重複的裝飾邏輯。裝飾模式沒有通過繼承原有類來擴充套件功能,但卻達到了一樣的目的,而且比繼承更加靈活,所以可以說裝飾模式是繼...

結構型設計模式 裝飾模式

先列舉乙個生活中的場景。假如我們買了一套房 買不起。但是是乙個毛胚房 指沒有任何裝修的房子 只能住。那麼我們為了讓房子變得溫馨舒適,就要進行裝修了,這樣沒有改變房子原本用來居住的功能,還增加了很多新的功能 比如做飯 那麼這一期的裝飾模式就是基於這樣的動機,在不改變原有功能的情況下新增新功能。那麼給乙...

PHP 裝飾器模式 結構型設計模式

動態地為類的例項新增功能,一層一層的套功能 先定義好介面 inte ce booking 這個就是裝飾器實現了booking,通過建構函式傳遞booking物件進來 abstract class bookingdecorator implements booking 這個類直接實現booking c...