設計模式學習筆記之裝飾模式

2021-07-23 10:36:16 字數 1302 閱讀 5986

/**

* 裝飾模式(包裝器):動態地給物件新增一些額外的職責。

* 即動態擴充套件乙個物件的功能,而不需要改變原始類**。

* 「具體元件」類和「具體裝飾」類是該模式最重要的兩個角色

* * 抽象元件

* @author zhenyonghe

* *eg.假設系統中有乙個bird抽象類以及bird類的乙個子類:sparrow。

*sparrow類實現了bird類的fly方法,使得sparrow類建立的物件

*呼叫fly方法能連續飛行100公尺。現在使用者需要兩種鳥,必須分別

*能連續飛行150公尺和200公尺。

* */

public abstract class bird

/**

* 具體元件

* @author zhenyonghe

*小鳥可以飛行100公尺

*/public class sparrow extends bird

}

/**

* 抽象裝飾類

* @author zhenyonghe

* */

public abstract class decorator extends bird

public decorator(bird bird)

}

/**

* 具體裝飾類

* @author zhenyonghe

* */

public class sparrowdecorator extends decorator

@override

public int fly()

private int elefly()

}

/**

* main方法:實現兩種鳥分別飛行150公尺,200公尺

* @author zhenyonghe

* */

public void needbird(bird bird)

public static void main(string args)

}

被裝飾者和裝飾者是松耦合關係,裝飾者(decorator)僅僅依賴於抽象元件(component),因此具體裝飾只知道它要裝飾的物件是抽象元件的某乙個子類的例項,但不需知道是哪個具體子類。

裝飾模式滿足「開-閉原則」,不必修改具體元件,就可增加新的針對該元件的具體裝飾。

可使用多個具體裝飾來修飾具體元件的例項。

設計模式之裝飾模式(筆記)

裝飾模式 動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更加靈活。裝飾模式結構圖如下 裝飾模式適用場合 當需要給系統新增新的功能時,而這些新增的功能僅僅是為了滿足一些只在某種特定情況下才會執行的特殊行為的需要,它把每個裝飾的功能放在單獨的類中,並讓這個類包裝它所要裝飾的物件,...

《設計模式》學習筆記 裝飾模式

裝飾模式 decorator pattern 指的是在不必改變原類檔案和使用繼承的情況下,動態地擴充套件乙個物件的功能.它是通過建立乙個包裝物件,也就是裝飾來包裹真實的物件。pragma once include includeclass car class runcar public car pr...

設計模式學習筆記 裝飾器模式

比如人的行為類,剛剛開始的時候,就能上得了廳堂,下得了廚房。但隨著年歲的增長,每個人歷經了世事,變得不僅是上得了廳堂,下得了廚房。有些人能鬥得過流氓,有些人修得了電腦。那麼如果用 表示這些增加了特殊行為的人。inte ce iperson class person implements iperso...