亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

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

30e8336b8229 / 3146人閱讀

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

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

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

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

Tips

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

裝飾器設(shè)計模式的生活場景

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

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

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

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

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

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

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

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

編寫一個接口Car

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

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

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

裝飾器設(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 裝飾器模式測試(){
        Car car = new WrapperCar(new QeqCar());
        car.run();
        car.stop();
    }

}

測試輸出:

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

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

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/75652.html

相關(guān)文章

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

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

    brianway 評論0 收藏0
  • 每天一個設(shè)計模式裝飾模式

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

    shleyZ 評論0 收藏0
  • JavaScript設(shè)計模式裝飾模式

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

    tangr206 評論0 收藏0
  • PHP設(shè)計模式裝飾模式

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

    Olivia 評論0 收藏0
  • PHP設(shè)計模式裝飾模式

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

    CloudwiseAPM 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<