成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

【設(shè)計(jì)模式】之裝飾器模式

30e8336b8229 / 3097人閱讀

摘要:于是乎,老李家去車行把車進(jìn)行了改裝,車速上去了,媳婦也領(lǐng)到了,皆大歡喜這其實(shí)就是一個(gè)裝飾器的使用案例,原來的車已經(jīng)沒法滿足了,所以進(jìn)行了速度增強(qiáng),其他功能并沒有改變。

裝飾器設(shè)計(jì)模式的概念

在實(shí)際生產(chǎn)中,某個(gè)類的行為(它所提供的方法)已經(jīng)沒法滿足當(dāng)前的需要了,但是又需要使用原有的部分功能,因此需要對(duì)原有對(duì)象進(jìn)行增強(qiáng)——裝飾器設(shè)計(jì)模式(Decorator Pattern)也叫包裝器模式就是為解決此問題而誕生的,它是對(duì)原有類的一個(gè)包裝,屬于結(jié)構(gòu)性設(shè)計(jì)模式。

裝飾器模式在不改變現(xiàn)有類方法簽名的前提下,對(duì)當(dāng)前的類進(jìn)行了增強(qiáng)。

Tips

我們使用繼承也可以實(shí)現(xiàn),但是會(huì)導(dǎo)致類型結(jié)構(gòu)的膨脹,難以維護(hù)。

裝飾器設(shè)計(jì)模式的生活場(chǎng)景

我們來看一個(gè)現(xiàn)實(shí)中的例子,老李頭家大兒子去年談了個(gè)朋友,女方要求有車才能領(lǐng)證,所以老李家買了一輛奇瑞eQ1,但是女方嫌車速太慢喜歡開快車的感覺...現(xiàn)在老李家正苦惱中...直到有一天在市里工作的大表哥回來聽說該情況后,大表哥說這個(gè)好整啊,搞到車行去改裝一下,把速度提上去就可以了啊。

于是乎,老李家去車行把車進(jìn)行了改裝,車速上去了,媳婦也領(lǐng)到了,皆大歡喜...

這其實(shí)就是一個(gè)裝飾器的使用案例,原來的eQ1車已經(jīng)沒法滿足了,所以進(jìn)行了速度增強(qiáng),其他功能并沒有改變。

裝飾器設(shè)計(jì)模式的特征

被增強(qiáng)類、增強(qiáng)類實(shí)現(xiàn)同一個(gè)接口

增強(qiáng)類持有被增強(qiáng)類的引用

被增強(qiáng)的方法調(diào)用增強(qiáng)類的方法,其他方法保持原有的繼續(xù)使用被增強(qiáng)類的舊方法

裝飾器模式的設(shè)計(jì)

編寫一個(gè)接口Car

被增強(qiáng)類 QeqCar 實(shí)現(xiàn) Car接口

增強(qiáng)類 Wrapper 實(shí)現(xiàn) Car接口

增強(qiáng)類 Wrapper持有被增強(qiáng)類 QeqCar 的引用

裝飾器設(shè)計(jì)模式的實(shí)現(xiàn)

Car.java

public interface Car {
    void run();

    void stop();
}

QeqCar.java

public class QeqCar implements Car {
    @Override
    public void run() {
        System.out.println("Qeq go...");
    }

    @Override
    public void stop() {
        System.out.println("Qeq stop!");
    }
}

WrapperCar.java

public class WrapperCar implements Car {

    private Car car;

    public WrapperCar(Car car) {
        this.car = car;
    }

    @Override
    public void run() {
        System.out.println("wapper run...");
    }

    @Override
    public void stop() {
        car.stop();
    }
}

WrapperTest .java

public class WrapperTest {

    @Test
    public void 裝飾器模式測(cè)試(){
        Car car = new WrapperCar(new QeqCar());
        car.run();
        car.stop();
    }

}

測(cè)試輸出:

wapper run...
Qeq stop!
更多關(guān)于設(shè)計(jì)模式的資料請(qǐng)參考:JAVA高級(jí)架構(gòu)師技術(shù)棧

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75652.html

相關(guān)文章

  • 每天一個(gè)設(shè)計(jì)模式裝飾模式

    摘要:作者按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用和兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種實(shí)現(xiàn)方式,但此小冊(cè)只記錄最直截了當(dāng)?shù)膶?shí)現(xiàn)方式原文地址是每天一個(gè)設(shè)計(jì)模式之裝飾者模式歡迎關(guān)注個(gè)人技術(shù)博客。 作者按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript和python兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種實(shí)現(xiàn)方式,但此小冊(cè)只記錄最直截了當(dāng)?shù)膶?shí)現(xiàn)方式...

    brianway 評(píng)論0 收藏0
  • 每天一個(gè)設(shè)計(jì)模式裝飾模式

    摘要:作者按每天一個(gè)設(shè)計(jì)模式旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用和兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種實(shí)現(xiàn)方式,但此小冊(cè)只記錄最直截了當(dāng)?shù)膶?shí)現(xiàn)方式原文地址是每天一個(gè)設(shè)計(jì)模式之裝飾者模式歡迎關(guān)注個(gè)人技術(shù)博客。 作者按:《每天一個(gè)設(shè)計(jì)模式》旨在初步領(lǐng)會(huì)設(shè)計(jì)模式的精髓,目前采用javascript和python兩種語(yǔ)言實(shí)現(xiàn)。誠(chéng)然,每種設(shè)計(jì)模式都有多種實(shí)現(xiàn)方式,但此小冊(cè)只記錄最直截了當(dāng)?shù)膶?shí)現(xiàn)方式...

    shleyZ 評(píng)論0 收藏0
  • JavaScript設(shè)計(jì)模式裝飾模式

    摘要:原文博客地址裝飾器模式為對(duì)象添加新功能不改變其原有的結(jié)構(gòu)和功能。手機(jī)殼就是裝飾器,沒有它手機(jī)也能正常使用,原有的功能不變,手機(jī)殼可以減輕手機(jī)滑落的損耗。 原文博客地址:https://finget.github.io/2018/11/22/decorator/ 裝飾器模式 為對(duì)象添加新功能;不改變其原有的結(jié)構(gòu)和功能。 手機(jī)殼就是裝飾器,沒有它手機(jī)也能正常使用,原有的功能不變,手機(jī)殼可以...

    tangr206 評(píng)論0 收藏0
  • PHP設(shè)計(jì)模式裝飾模式

    摘要:裝飾器模式解決的問題修飾模式,是面向?qū)ο缶幊填I(lǐng)域中,一種動(dòng)態(tài)地往一個(gè)類中添加新的行為的設(shè)計(jì)模式。可以看到,這樣的模型很具有擴(kuò)者性,我們可以輕松的添加其他裝飾器給區(qū)域?qū)ο?,且不需要更改其他類? 裝飾器模式解決的問題 修飾模式,是面向?qū)ο缶幊填I(lǐng)域中,一種動(dòng)態(tài)地往一個(gè)類中添加新的行為的設(shè)計(jì)模式。就功能而言,修飾模式相比生成子類更為靈活,這樣可以給某個(gè)對(duì)象而不是整個(gè)類添加一些功能。 將所有的功...

    Olivia 評(píng)論0 收藏0
  • PHP設(shè)計(jì)模式裝飾模式

    摘要:概念裝飾器模式允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的一個(gè)包裝。這種模式創(chuàng)建了一個(gè)裝飾類,用來包裝原有的類,并在保持類方法簽名完整性的前提下,提供了額外的功能。 概念 裝飾器模式(Decorator Pattern)允許向一個(gè)現(xiàn)有的對(duì)象添加新的功能,同時(shí)又不改變其結(jié)構(gòu)。這種類型的設(shè)計(jì)模式屬于結(jié)構(gòu)型模式,它是作為現(xiàn)有的類的...

    CloudwiseAPM 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<