裝飾者模式 Decorator

2021-08-29 09:43:03 字數 1098 閱讀 6206

1: 作用

動態的給物件增加執行的業務,不受數量限制。可以代替子類,同時避免子類與父類的高耦合。增加靈活性。

2:構成

2.1 裝飾者抽象類--decorator (可以是介面)

最終生成乙個指向被裝飾物件基類(component)例項的引用,並定義乙個與被裝飾物件基類(component)介面一致的介面。

通過這個抽象類或介面來指向具體的執行物件。

2.2 被裝飾的物件的基類--component 

放在最裡面核心的位置,用來生成基礎的被裝飾物件,可以給這個物件動態的新增職責。

2.3具體被裝飾物件--concretecomponent

生成具體的裝飾物件,其屬性中包含乙個裝飾者抽象類decorator物件,一般擁有乙個含參的構造方法,引數為乙個裝飾者抽象類decorator物件,用來設定屬性中的裝飾者抽象類decorator物件。

2.4 具體的裝飾者 - concretedecorator

最終的操作者,給內部的被裝飾的物件增加(裝飾物件的)職責。

3 例目的:造一座房子 ;  裝飾:門,窗,床。

可以任意的給這座房子裝飾 門,窗,床中的一種或幾種。順序也可以改變。

//裝飾者抽象類

public inte***ce build

//具體裝飾

public class buildbed implements build

@override

public void act()

}//具體裝飾

public class builddoor implements build

@override

public void act()

}//具體裝飾

public class buildwindow implements build

@override

public void act()

}//具體被裝飾物件

public class house implements build

}public class test

}

具體裝飾之上可以抽象出一層裝飾者抽象類。

裝飾者模式decorator

設計原則 開放 關閉原則,對擴充套件開放,對修改封閉 多用組合,少用繼承 針對介面程式設計,不針對實現程式設計 為互動物件之間的松耦合設計而努力 類圖待補充 示例 飲料銷售系統 主體飲料 coffe 輔助調料 mocha,soy,whip。輔助調料價位都不一樣,當輔助調料和主飲料不同搭配時,最終飲料...

裝飾者(Decorator)模式

裝飾者模式是允許向乙個新物件新增新的功能,但又不改變其結構。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。就增加功能來說,裝飾器模式相比生成子類更為靈活。例子 如果我們去咖啡店,有一種咖啡,該咖啡可以加糖,牛奶,奶泡等等,如果我們需要加糖和牛奶,常規...

裝飾者模式 Decorator

裝飾者模式 動態地將責任附加到物件上,若要擴充套件功能,裝飾者提供了比繼承更有彈性的替代方案。動態地給乙個物件新增一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活 要點1.繼承屬於擴充套件形式之一,但不見得是達到彈性設計的最佳方式 2.應該允許行為可以被擴充套件,而無須修改現有的 3.組合...