摘要:裝飾器模式一裝飾器模式定義在不改變原類文件和使用繼承的情況下,動態(tài)的擴展一個對象的功能通過創(chuàng)建一個包裝對象裝飾,來包裹真實的對象二具體實現(xiàn)創(chuàng)建被裝飾對象接口創(chuàng)建被裝飾對象創(chuàng)建裝飾器抽象類創(chuàng)建具體裝飾器調(diào)用輸出三優(yōu)缺點優(yōu)點裝飾器模式和繼承的共
裝飾器模式
一.裝飾器模式 1.1 定義在不改變原類文件和使用繼承的情況下,動態(tài)的擴展一個對象的功能.
通過創(chuàng)建一個包裝對象(裝飾),來包裹真實的對象.
二.具體實現(xiàn) 1.1 創(chuàng)建被裝飾對象接口public interface IDecorated { void print(); }1.2 創(chuàng)建被裝飾對象
public class Decorated implements IDecorated{ @Override public void print() { System.out.println("decorated print ..."); } }1.3 創(chuàng)建裝飾器抽象類
public abstract class Decorator implements IDecorated { private IDecorated decorated; public Decorator(IDecorated decorated){ this.decorated = decorated; } public void print(){ decorated.print(); } }1.4 創(chuàng)建具體裝飾器
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 調(diào)用
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 ...三.優(yōu)缺點 3.1 優(yōu)點
裝飾器模式和繼承的共同特點就是擴展對象的功能,而裝飾器模式比繼承更加靈活.
通過使用不同的具體裝飾器類,及其不同的排列組合,可以產(chǎn)生出大量不同的組合.
3.2 缺點裝飾器模式比繼承更加復(fù)雜.
會出現(xiàn)一些小類,過度使用會使程序變得復(fù)雜.
四.源碼https://github.com/Seasons20/DisignPattern.git
END
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/69492.html
摘要:通常有兩種方式可以實現(xiàn)給一個類或?qū)ο笤黾有袨槔^承機制,使用繼承機制是給現(xiàn)有類添加功能的一種有效途徑,通過繼承一個現(xiàn)有類可以使得子類在擁有自身方法的同時還擁有父類的方法。 裝飾模式 (Decorator Pattern) 裝飾模式能夠?qū)崿F(xiàn)動態(tài)的為對象添加功能,是從一個對象外部來給對象添加功能。通常有兩種方式可以實現(xiàn)給一個類或?qū)ο笤黾有袨椋? 繼承機制,使用繼承機制是給現(xiàn)有類添加功能的一種...
摘要:裝飾者模式裝飾者模式就是動態(tài)的給類或?qū)ο笤黾庸δ艿脑O(shè)計模式。下的實現(xiàn)里的裝飾器目前處在建議征集的第二階段,不被瀏覽器所支持,如果想要提前使用這個新特性就需要,等工具進(jìn)行轉(zhuǎn)譯。這里介紹下的用法。 1.1、裝飾者模式 裝飾者模式就是動態(tài)的給類或?qū)ο笤黾庸δ艿脑O(shè)計模式。在程序運行時動態(tài)的給一個具備基礎(chǔ)功能的類或?qū)ο筇砑有碌墓δ埽⑶也粫淖儠茐幕A(chǔ)類和對象的功能。先提煉出產(chǎn)品的最小可用產(chǎn)品...
摘要:原文博客地址裝飾器模式為對象添加新功能不改變其原有的結(jié)構(gòu)和功能。手機殼就是裝飾器,沒有它手機也能正常使用,原有的功能不變,手機殼可以減輕手機滑落的損耗。 原文博客地址:https://finget.github.io/2018/11/22/decorator/ 裝飾器模式 為對象添加新功能;不改變其原有的結(jié)構(gòu)和功能。 手機殼就是裝飾器,沒有它手機也能正常使用,原有的功能不變,手機殼可以...
摘要:裝飾者要實現(xiàn)這些相同的方法繼承自裝飾器對象創(chuàng)建具體的裝飾器,也是接收作對參數(shù)接下來我們要為每一個功能創(chuàng)建一個裝飾者對象,重寫父級方法,添加我們想要的功能。 裝飾模式 僅僅包裝現(xiàn)有的模塊,使之 更加華麗 ,并不會影響原有接口的功能 —— 好比你給手機添加一個外殼罷了,并不影響手機原有的通話、充電等功能; 使用 ES7 的 decorator ES7 中增加了一個 decorator 屬性...
閱讀 1152·2021-11-23 10:04
閱讀 2412·2021-11-22 15:29
閱讀 2806·2021-11-19 09:40
閱讀 729·2021-09-22 15:26
閱讀 2129·2019-08-29 16:27
閱讀 2498·2019-08-29 16:10
閱讀 1932·2019-08-29 15:43
閱讀 3285·2019-08-29 12:43