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

裝飾模式(Decorator),動(dòng)態(tài)地給一個(gè)對(duì)象添加一些額外的職責(zé),就增加功能來(lái)說(shuō),裝飾模式比生成子類(lèi)更為靈活。[DP]


image.png

//Component類(lèi)

 abstract class Component {
    public abstract void Operation();
}

//ConcrenteComponent類(lèi)

class ConcrenteComponent : Component
{
    public override void Operation()
    {
        //具體對(duì)象操作
    }
}

//Decorator類(lèi)

abstract class Decorator : Component
{
    Component component;
    public void SetComponent(Component component)
    {
        this.component = component;
    }
    public override void Operation()
    {
        if (component != null)
        {
            component.Operation();
        }
    }
}

//客戶(hù)端代碼

class TestDecorator : MonoBehaviour {

    void Start () {
        ConcrenteComponent c = new ConcrenteComponent();
        ConcreteDecoratorA cd1 = new ConcreteDecoratorA();
        ConcreteDecoratorB cd2 = new ConcreteDecoratorB();
        cd1.SetComponent(c);
        cd2.SetComponent(cd1);
        cd2.Operation();
    }
}

總結(jié):裝飾模式簡(jiǎn)化原有的類(lèi)。把類(lèi)與裝飾功能區(qū)分開(kāi)了,這樣可以有效使用裝飾功能,自由度也變得很高。
何時(shí)使用:當(dāng)一個(gè)功能新加入的東西僅僅是為了滿足一些只在某種特定情況下才會(huì)執(zhí)行的特殊行為。裝飾模式把裝飾的功能放在單獨(dú)的類(lèi)中,并讓這個(gè)類(lèi)包裝它所要裝飾的對(duì)象,當(dāng)需要執(zhí)行特殊行為時(shí),按選擇順序使用裝飾功能包裝對(duì)象。

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

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

  • 需求 寫(xiě)一個(gè)給人模擬搭配不同服飾的程序,可以給人換各種各樣的衣服褲子的形象。 初步實(shí)現(xiàn) 需求比較簡(jiǎn)單,直接上代碼:...
    Mr丶sorrow閱讀 844評(píng)論 0 2
  • 原文地址:LoveDev 裝飾模式(Decorator Pattern):也可以稱(chēng)為包裝模式(Wrapper Pa...
    KevinLive閱讀 707評(píng)論 1 2
  • 1.裝飾模式的定義及使用場(chǎng)景定義:裝飾模式也稱(chēng)為包裝模式,結(jié)構(gòu)型設(shè)計(jì)模式之一,其使用一種對(duì)客戶(hù)端透明的方式來(lái)動(dòng)態(tài)地...
    GB_speak閱讀 353評(píng)論 0 0
  • 模式動(dòng)機(jī) 一般有兩種方式可以實(shí)現(xiàn)給一個(gè)類(lèi)或?qū)ο笤黾有袨椋?繼承機(jī)制,使用繼承機(jī)制是給現(xiàn)有類(lèi)添加功能的一種有效途徑,...
    lever_xu閱讀 347評(píng)論 0 0
  • 端午假期第二天,天氣晴好,約好去看望剛生完二胎寶寶的朋友。因?yàn)楹苁炝?,出門(mén)前先電話問(wèn)清楚新寶貝尿不濕的牌子,送點(diǎn)實(shí)...
    藍(lán)色冰粒閱讀 235評(píng)論 0 0

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