裝飾模式

裝飾模式

  • 就是給一個對象增加一些新的功能,并且裝飾的對象的和被裝飾的對象都要實現(xiàn)同一個接口,裝飾者持有被裝飾者的對象的實例。
public interface Sourceable {
    public void method();
}

被裝飾的類

public class Source implements Sourceable {

    @Override
    public void method() {
        System.out.println("the original method!");
    }
}

裝飾的類

public class Decorator implements Sourceable {

    private Sourceable source;
    將裝飾類當(dāng)構(gòu)造傳遞進(jìn)來
    public Decorator(Sourceable source){
        super();
        this.source = source;
    }
    @Override
    public void method() {
        System.out.println("before decorator!");
        source.method();
        System.out.println("after decorator!");
    }
}

測試代碼

public class DecoratorTest {

    public static void main(String[] args) {
        Sourceable source = new Source();
        Sourceable obj = new Decorator(source);
        obj.method();
    }
}

裝飾器模式的應(yīng)用場景:
1、需要擴(kuò)展一個類的功能。
2、動態(tài)的為一個對象增加功能,而且還能動態(tài)撤銷。(繼承不能做到這一點,繼承的功能是靜態(tài)的,不能動態(tài)增刪。)
缺點:產(chǎn)生過多相似的對象,不易排錯!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 一、模式動機(jī) 一般有兩種方式可以實現(xiàn)給一個類或?qū)ο笤黾有袨椋?繼承機(jī)制,使用繼承機(jī)制是給現(xiàn)有類添加功能的一種有效途...
    端木軒閱讀 576評論 0 0
  • 1 概述 在一個項目中,你會有非常多的因素考慮不到,特別是業(yè)務(wù)的變更,不時的冒出一個需求是很正常的情況。有三個繼承...
    今晚打肉山閱讀 368評論 0 0
  • 0x01 前言 ??裝飾器模式(Decorator Pattern)允許向一個現(xiàn)有的對象添加新的功能,同時又不改變...
    菩提樹下成魔閱讀 478評論 0 0
  • 模式動機(jī) 一般有兩種方式可以實現(xiàn)給一個類或?qū)ο笤黾有袨椋?繼承機(jī)制,使用繼承機(jī)制是給現(xiàn)有類添加功能的一種有效途徑,...
    lever_xu閱讀 341評論 0 0
  • fieldset標(biāo)簽:
    AnnQi閱讀 579評論 0 1

友情鏈接更多精彩內(nèi)容