设计模式-装饰模式

装饰模式(Decorator),动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。[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();
    }
}

总结:装饰模式简化原有的类。把类与装饰功能区分开了,这样可以有效使用装饰功能,自由度也变得很高。
何时使用:当一个功能新加入的东西仅仅是为了满足一些只在某种特定情况下才会执行的特殊行为。装饰模式把装饰的功能放在单独的类中,并让这个类包装它所要装饰的对象,当需要执行特殊行为时,按选择顺序使用装饰功能包装对象。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 需求 写一个给人模拟搭配不同服饰的程序,可以给人换各种各样的衣服裤子的形象。 初步实现 需求比较简单,直接上代码:...
    Mr丶sorrow阅读 782评论 0 2
  • 原文地址:LoveDev 装饰模式(Decorator Pattern):也可以称为包装模式(Wrapper Pa...
    KevinLive阅读 647评论 1 2
  • 1.装饰模式的定义及使用场景定义:装饰模式也称为包装模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态地...
    GB_speak阅读 294评论 0 0
  • 模式动机 一般有两种方式可以实现给一个类或对象增加行为: 继承机制,使用继承机制是给现有类添加功能的一种有效途径,...
    lever_xu阅读 284评论 0 0
  • 端午假期第二天,天气晴好,约好去看望刚生完二胎宝宝的朋友。因为很熟了,出门前先电话问清楚新宝贝尿不湿的牌子,送点实...
    蓝色冰粒阅读 203评论 0 0