設計模式-裝飾器模式
1、定義 :
在不改變原有物件的基礎之上,將功能附加到物件上,提供了比繼承更有彈性的替代方案(擴充套件原有物件的功能)。
2、優點:
裝飾器是繼承的有力補充,比繼承靈活,不改變原有物件的情況下動態的給乙個物件擴充套件功能,即插即用;
通過使用不同裝飾類以及這些裝飾類的排列組合,可實現不同效果;
裝飾器完全遵守開閉原則。
3、缺點:
會出現更多的**,更多的類,增加程式複雜性;
動態裝飾時,多層裝飾時會更複雜。
4、適用場景:
用於擴充套件乙個類的功能或給乙個類新增附加職責;
動態的給乙個物件新增功能,這些功能可以再動態的撤銷。
5、類圖:
6、裝飾器模式中的角色:
7、**示例:(動態設定監控考勤裝置的例子,本例子純屬虛構)
監控考勤裝置的方式如下:
/**
* 監控考勤裝置的抽象方法
*/public abstract class monitorequipment
/**
* 最基本的方法:監控裝置是否正常執行,繼承monitorequipment,並重寫監控方法
*/public class basemonitor extends monitorequipment
}
/**
* 裝飾器角色:構造引數傳入monitorequipment
*/public class decorator extends monitorequipment
@override
protected string monitor()
}
/**
* 具體裝飾角色a:在原有功能基礎上新增監控考勤人數是否正常
*/public class monitora extends decorator
protected string monitor()
}
/**
* 裝飾角色b:新增設定最小監控異常人數為100人
*/public class monitorb extends decorator
protected string monitor()
}
/**
* 測試類
*/public class clienttest
}
測試結果
---------監控裝置是否正常工作-----------
監控考勤裝置是否正常工作(基本)
---------新增監控考勤人數是否異常-----------
監控考勤裝置是否正常工作(基本)-----監控考勤人數是否正常
---------設定最小監控異常人數-----------
監控考勤裝置是否正常工作(基本)-----監控考勤人數是否正常----------設定最小監控異常人數為100人
設計模式 裝飾器模式
裝飾器模式 decorator pattern 允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。public inte ce playe...
設計模式 裝飾器模式
裝飾者模式的應用場景 裝飾者模式 decorator pattern 是指在不改變原有物件的基礎之上,將功能附加到物件上,提供了比繼承更有彈性的替代方案 擴充套件原有物件的功能 屬於結構型模式。裝飾者模式在我們生活中應用也比較多如給煎餅加雞蛋 給蛋糕加上一些水果 給房子裝修等,為物件擴充套件一些額外...
設計模式 裝飾器模式
定義 裝飾模式可以動態的給乙個物件增加一些額外的功能 增強功能 相比於繼承,裝飾模式能對不支援繼承的類進行增強 並且比繼承更靈活,不需要生成大量的子類。角色 實現 public abstract class house public abstract void sleep public class ...