国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

裝飾器模式(結(jié)構(gòu)性)

這篇具有很好參考價值的文章主要介紹了裝飾器模式(結(jié)構(gòu)性)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

裝飾器模式:動態(tài)的給對象添加新的功能。
主要有以下幾種角色:
ConcreteCompnent(具體構(gòu)件):作為需要被裝飾的類,在具體構(gòu)件中只需要實現(xiàn)最基礎(chǔ)的業(yè)務(wù)邏輯即可;
Decorator(抽象裝飾器):抽象裝飾器維護(hù)了一個指向抽象構(gòu)件對象的引用(子類通過構(gòu)造器等方法明確使用何種具體構(gòu)件),即通過組合方式將裝飾者和被裝飾者建立起一個相比繼承關(guān)系更為寬松的聯(lián)系。同時作為抽象構(gòu)件的子類,抽象裝飾器還給具體構(gòu)件增加了額外的職責(zé),其額外的職責(zé)在抽象裝飾器的子類中得到實現(xiàn);
ConcreteDecorator(具體裝飾器):作為抽象裝飾器的子類,具體裝飾器實現(xiàn)了需要給具體構(gòu)件添加的額外職責(zé);
Component(抽象構(gòu)件):需要被裝飾類的基類,同時也是裝飾者的基類,在這個基類中聲明了需要實現(xiàn)的業(yè)務(wù)方法
1、優(yōu)點
(1)裝飾類和被裝飾類可以獨立發(fā)展,而不會相互耦合。換句話說,Component類無需知道Decorator類,Decorator類是從外部來擴展Component類的功能,而Decorator也不用知道具體的構(gòu)件。

(2)裝飾器模式是繼承關(guān)系的一個替代方案。我們看裝飾類Decorator,不管裝飾多少層,返回的對象還是Component(因為Decorator本身就是繼承自Component的),實現(xiàn)的還是is-a的關(guān)系。

2、缺點
(1)裝飾器模式雖然減少了類的爆炸,但是在使用的時候,你就可能需要更多的對象來表示繼承關(guān)系中的一個對象

(2)裝飾器模式雖然從數(shù)量級上減少了類的數(shù)量,但是為了要裝飾,仍舊會增加很多的小類這些具體的裝飾類的邏輯將不會非常的清晰,不夠直觀,容易令人迷惑。
示例
Component(抽象構(gòu)件):

public interface Product {
    void fuction();
}

ConcreteCompnent(具體構(gòu)件):

public class Phone implements Product{
    @Override
    public void fuction() {
        System.out.println("手機能拍照");
    }
}

Decorator(抽象裝飾器):

public abstract class PhoneDecorator implements Product {

    private Product product;

    public PhoneDecorator(Product product) {
        this.product = product;
    }

    @Override
    public void fuction() {
        this.product.fuction();
    }
}

ConcreteDecorator(具體裝飾器):

public class PhoneDecoratorInfo extends PhoneDecorator{

    public PhoneDecoratorInfo(Product product) {
        super(product);
    }

    @Override
    public void fuction() {
        super.fuction();
        System.out.println("添加短信功能");
    }


}
public class PhoneDecoratorInfo1 extends PhoneDecorator{
    public PhoneDecoratorInfo1(Product product) {
        super(product);
    }

    @Override
    public void fuction() {
        super.fuction();
        System.out.println("添加一個打電話功能");
    }
}

測試:

public class Test {

    public static void main(String[] args) {
        Product product=new Phone();
        PhoneDecoratorInfo phoneDecoratorInfo = new PhoneDecoratorInfo(product);
        PhoneDecoratorInfo phoneDecoratorInfo1=new PhoneDecoratorInfo(new PhoneDecoratorInfo1(new PhoneDecoratorInfo1(phoneDecoratorInfo)));
        phoneDecoratorInfo1.fuction();

    }
}

結(jié)果:
裝飾器模式(結(jié)構(gòu)性)文章來源地址http://www.zghlxwxcb.cn/news/detail-408252.html

到了這里,關(guān)于裝飾器模式(結(jié)構(gòu)性)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 12、【裝飾器模式】動態(tài)地為對象添加新功能

    12、【裝飾器模式】動態(tài)地為對象添加新功能

    你好,我是程序員雪球。 今天我們來聊聊 23 種設(shè)計模式中,一種常見的結(jié)構(gòu)型模式,裝飾器模式。聊聊它的設(shè)計思想、實現(xiàn)原理,應(yīng)用場景,以及如何使用。 ? ? 裝飾器模式(Decorator Pattern)是一種結(jié)構(gòu)型設(shè)計模式,它允許在不改變原始類的基礎(chǔ)上,動態(tài)地為對象添加新的

    2024年04月29日
    瀏覽(24)
  • 算法分析與設(shè)計-會場安排問題(貪心)(通俗易懂,附源碼和圖解,含貪心選擇性質(zhì)和最優(yōu)子結(jié)構(gòu)性質(zhì)的證明)(c++)

    算法分析與設(shè)計-會場安排問題(貪心)(通俗易懂,附源碼和圖解,含貪心選擇性質(zhì)和最優(yōu)子結(jié)構(gòu)性質(zhì)的證明)(c++)

    (一)題目 問題描述 假設(shè)在足夠多的會場里安排一批活動,并希望使用盡可能少的會場。設(shè)計一個有效的貪心算法進(jìn)行安排。(這個問題實際上是著名的圖著色問題。若將每個活動作為圖的一個頂點,不相容活動間用邊相連。使相鄰頂點有著不同顏色的最小著色數(shù),相當(dāng)于

    2024年02月07日
    瀏覽(62)
  • 裝飾器模式:讓你的對象變得更強大

    在日常開發(fā)中,當(dāng)需要給一個現(xiàn)有類添加附加職責(zé),而又不能采用生成子類的方法進(jìn)行擴充時。例如,該類被隱藏或者該類是終極類或者采用繼承方式會產(chǎn)生大量的子類。這時候,我們該怎么辦呢?我們可以使用裝飾器器模式來解決這個問題, 本文將從以下四個方面講解裝飾

    2024年02月10日
    瀏覽(22)
  • 篇八:裝飾器模式:動態(tài)增加功能

    篇八: “裝飾器模式:動態(tài)增加功能” 開始本篇文章之前先推薦一個好用的學(xué)習(xí)工具,AIRIght,借助于AI助手工具,學(xué)習(xí)事半功倍。歡迎訪問:http://airight.fun/。 另外有2本不錯的關(guān)于設(shè)計模式的資料,分享出來與大家學(xué)習(xí)參考。 鏈接:https://pan.baidu.com/s/1RmhQF_o1CdK8U7s5KeILog?pwd

    2024年02月14日
    瀏覽(14)
  • 設(shè)計思想培養(yǎng):裝飾者模式下的RecyclerView添加頭、尾

    設(shè)計思想培養(yǎng):裝飾者模式下的RecyclerView添加頭、尾

    一個高復(fù)用、低耦合的代碼不會讓你在第一次去實現(xiàn)代碼的時候感到舒服 但是他會在你后面做擴展、和同類需求的時候,直呼真香!??! 最近寫需求,借用到裝飾者思想做了RecyclerView的頭和尾的擴展 感覺很不錯,趕緊拿出來說一說,嘻嘻 ps:本篇文章只是幫助大家,在實現(xiàn)

    2024年02月06日
    瀏覽(20)
  • 【結(jié)構(gòu)型模式】裝飾者模式

    【結(jié)構(gòu)型模式】裝飾者模式

    裝飾模式 — Graphic Design Patterns 設(shè)計模式 | 裝飾者模式及典型應(yīng)用 黑馬程序員Java設(shè)計模式詳解-裝飾者模式概述 裝飾者模式 ( Decorator )是一種結(jié)構(gòu)型設(shè)計模式,它允許你在 不改變 對象自身的基礎(chǔ)上, 動態(tài) 地給一個對象 添加額外的功能 。該模式是通過創(chuàng)建一個包裝對象來實

    2023年04月15日
    瀏覽(64)
  • 結(jié)構(gòu)型模式-裝飾者模式

    結(jié)構(gòu)型模式-裝飾者模式

    概述 我們先來看一個快餐店的例子。 快餐店有炒面、炒飯這些快餐,可以額外附加雞蛋、火腿、培根這些配菜,當(dāng)然加配菜需要額外加錢,每個配菜的價錢通常不太一樣,那么計算總價就會顯得比較麻煩。 使用繼承的方式存在的問題: 擴展性不好 如果要再加一種配料(火

    2024年02月01日
    瀏覽(30)
  • 設(shè)計模式【結(jié)構(gòu)型】-- 裝飾者模式

    設(shè)計模式【結(jié)構(gòu)型】-- 裝飾者模式

    裝飾者模式是一種 結(jié)構(gòu)型設(shè)計模式 ,它允許你動態(tài)地將新功能添加到對象中,通過將對象放入包含這些功能的特殊包裝器對象中。這樣一來,你可以在運行時通過組合不同的對象來擴展功能,而不是通過繼承修改代碼。 大白話 : 裝飾模式,是指在不改變原有對象的基礎(chǔ)上

    2024年02月16日
    瀏覽(31)
  • 第八章結(jié)構(gòu)型模式—裝飾者模式

    第八章結(jié)構(gòu)型模式—裝飾者模式

    結(jié)構(gòu)型模式描述如何將類或?qū)ο蟀茨撤N布局組成更大的結(jié)構(gòu),有以下兩種: 類結(jié)構(gòu)型模式 :采用繼承機制來組織接口和類。 對象結(jié)構(gòu)型模式 :釆用組合或聚合來組合對象。 由于組合關(guān)系或聚合關(guān)系比繼承關(guān)系耦合度低,滿足 “合成復(fù)用原則”,所以對象結(jié)構(gòu)型模式比類結(jié)

    2024年02月05日
    瀏覽(19)
  • 笨蛋學(xué)設(shè)計模式結(jié)構(gòu)型模式-裝飾者模式【9】

    7.3.1概念 ? 裝飾者模式通過在一個現(xiàn)有對象中,能動態(tài)的給該對象添加新的功能,同時不改變對象本身的結(jié)構(gòu),是繼承的一種替代方案,可以實現(xiàn)在不定義子類的情況下,運行時動態(tài)地擴展對象的行為(給對象添加一些額外的功能),而無需修改原有代碼。 7.3.2場景 ? 當(dāng)我們

    2024年01月17日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包