設計模式-裝飾模式

裝飾模式(Decorator),動態(tài)地給一個對象添加一些額外的職責,就增加功能來說,裝飾模式比生成子類更為靈活。[DP]


image.png

//Component類

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

//ConcrenteComponent類

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

//Decorator類

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

//客戶端代碼

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();
    }
}

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

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

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

  • 需求 寫一個給人模擬搭配不同服飾的程序,可以給人換各種各樣的衣服褲子的形象。 初步實現(xiàn) 需求比較簡單,直接上代碼:...
    Mr丶sorrow閱讀 842評論 0 2
  • 原文地址:LoveDev 裝飾模式(Decorator Pattern):也可以稱為包裝模式(Wrapper Pa...
    KevinLive閱讀 703評論 1 2
  • 1.裝飾模式的定義及使用場景定義:裝飾模式也稱為包裝模式,結構型設計模式之一,其使用一種對客戶端透明的方式來動態(tài)地...
    GB_speak閱讀 341評論 0 0
  • 模式動機 一般有兩種方式可以實現(xiàn)給一個類或對象增加行為: 繼承機制,使用繼承機制是給現(xiàn)有類添加功能的一種有效途徑,...
    lever_xu閱讀 336評論 0 0
  • 端午假期第二天,天氣晴好,約好去看望剛生完二胎寶寶的朋友。因為很熟了,出門前先電話問清楚新寶貝尿不濕的牌子,送點實...
    藍色冰粒閱讀 226評論 0 0

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