摘要:裝飾器模式一裝飾器模式定義在不改變原類文件和使用繼承的情況下,動態的擴展一個對象的功能通過創建一個包裝對象裝飾,來包裹真實的對象二具體實現創建被裝飾對象接口創建被裝飾對象創建裝飾器抽象類創建具體裝飾器調用輸出三優缺點優點裝飾器模式和繼承的共
裝飾器模式
一.裝飾器模式 1.1 定義在不改變原類文件和使用繼承的情況下,動態的擴展一個對象的功能.
通過創建一個包裝對象(裝飾),來包裹真實的對象.
二.具體實現 1.1 創建被裝飾對象接口public interface IDecorated { void print(); }1.2 創建被裝飾對象
public class Decorated implements IDecorated{ @Override public void print() { System.out.println("decorated print ..."); } }1.3 創建裝飾器抽象類
public abstract class Decorator implements IDecorated { private IDecorated decorated; public Decorator(IDecorated decorated){ this.decorated = decorated; } public void print(){ decorated.print(); } }1.4 創建具體裝飾器
public class DecoratorA extends Decorator{ public DecoratorA(IDecorated decorated){ super(decorated); } @Override public void print() { super.print(); System.out.println("decoratorA print ..."); } } public class DecoratorB extends Decorator{ public DecoratorB(IDecorated decorated){ super(decorated); } @Override public void print() { super.print(); System.out.println("decoratorB print ..."); } }1.5 調用
public static void main(String[] args) { IDecorated decorated = new Decorated(); Decorator decorator = new DecoratorA(decorated); decorator.print(); decorator = new DecoratorB(new DecoratorA(decorated)); decorator.print(); }1.6 輸出
decorated print ... decoratorA print ... decorated print ... decoratorA print ... decoratorB print ...三.優缺點 3.1 優點
裝飾器模式和繼承的共同特點就是擴展對象的功能,而裝飾器模式比繼承更加靈活.
通過使用不同的具體裝飾器類,及其不同的排列組合,可以產生出大量不同的組合.
3.2 缺點裝飾器模式比繼承更加復雜.
會出現一些小類,過度使用會使程序變得復雜.
四.源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69492.html
摘要:通常有兩種方式可以實現給一個類或對象增加行為繼承機制,使用繼承機制是給現有類添加功能的一種有效途徑,通過繼承一個現有類可以使得子類在擁有自身方法的同時還擁有父類的方法。 裝飾模式 (Decorator Pattern) 裝飾模式能夠實現動態的為對象添加功能,是從一個對象外部來給對象添加功能。通常有兩種方式可以實現給一個類或對象增加行為: 繼承機制,使用繼承機制是給現有類添加功能的一種...
摘要:裝飾者模式裝飾者模式就是動態的給類或對象增加功能的設計模式。下的實現里的裝飾器目前處在建議征集的第二階段,不被瀏覽器所支持,如果想要提前使用這個新特性就需要,等工具進行轉譯。這里介紹下的用法。 1.1、裝飾者模式 裝飾者模式就是動態的給類或對象增加功能的設計模式。在程序運行時動態的給一個具備基礎功能的類或對象添加新的功能,并且不會改變會破壞基礎類和對象的功能。先提煉出產品的最小可用產品...
摘要:原文博客地址裝飾器模式為對象添加新功能不改變其原有的結構和功能。手機殼就是裝飾器,沒有它手機也能正常使用,原有的功能不變,手機殼可以減輕手機滑落的損耗。 原文博客地址:https://finget.github.io/2018/11/22/decorator/ 裝飾器模式 為對象添加新功能;不改變其原有的結構和功能。 手機殼就是裝飾器,沒有它手機也能正常使用,原有的功能不變,手機殼可以...
摘要:裝飾者要實現這些相同的方法繼承自裝飾器對象創建具體的裝飾器,也是接收作對參數接下來我們要為每一個功能創建一個裝飾者對象,重寫父級方法,添加我們想要的功能。 裝飾模式 僅僅包裝現有的模塊,使之 更加華麗 ,并不會影響原有接口的功能 —— 好比你給手機添加一個外殼罷了,并不影響手機原有的通話、充電等功能; 使用 ES7 的 decorator ES7 中增加了一個 decorator 屬性...
閱讀 1141·2021-11-23 10:04
閱讀 2401·2021-11-22 15:29
閱讀 2743·2021-11-19 09:40
閱讀 715·2021-09-22 15:26
閱讀 2117·2019-08-29 16:27
閱讀 2484·2019-08-29 16:10
閱讀 1918·2019-08-29 15:43
閱讀 3275·2019-08-29 12:43