装饰模式

装饰模式(Decorator)定义:
动态的给一个对象添加额外的职责,就增加功能来说,装饰模式比生成子类更灵活。

下面是书中,以小菜穿衣服为例子:


public class Test
{
    void Main()
    {
        Person xc = new Person("小菜");
        Debug.Log("第一种装扮:");

        TShirts t = new TShirts();
        Shooes s = new Shooes();
        BigTrouser b = new BigTrouser();

        t.Decorate(xc);
        s.Decorate(t);
        b.Decorate(s);

        b.Show();
    }

   
}

class Person
{
    public Person() { }

    private string name;
    public Person(string name)
    {
        this.name = name;
    }

    public virtual void Show()
    {
        Debug.Log(string.Format("装扮的{0}", name));
    }
}

//服饰类
class Finery : Person
{
    Person component;

    public void Decorate(Person com)
    {
        this.component = com;
    }

    public override void Show()
    {
        if (component != null)
            component.Show();
    }
}

//具体服饰类

class TShirts : Finery
{
    public override void Show()
    {
        Debug.Log("大TShirt");
        base.Show();
    }
}

class BigTrouser : Finery
{
    public override void Show()
    {
        Debug.Log("跨裤");
        base.Show();
    }
}

class Shooes : Finery
{
    public override void Show()
    {
        Debug.Log("拖鞋");
        base.Show();
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. 概述 demo地址,欢迎star 2. 问题 3. 解决方案 装饰器模式: 动态地给一个对象添加一些额外的...
    barry阅读 1,864评论 0 0
  • 一、模式动机 一般有两种方式可以实现给一个类或对象增加行为: 继承机制,使用继承机制是给现有类添加功能的一种有效途...
    端木轩阅读 3,446评论 0 0
  • 0x01 前言   装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变...
    菩提树下成魔阅读 3,081评论 0 0
  • 1 概述 在一个项目中,你会有非常多的因素考虑不到,特别是业务的变更,不时的冒出一个需求是很正常的情况。有三个继承...
    今晚打肉山阅读 2,607评论 0 0
  • 1 场景问题# 1.1 复杂的奖金计算## 考虑这样一个实际应用:就是如何实现灵活的奖金计算。 奖金计算是相对复杂...
    七寸知架构阅读 9,587评论 4 67

友情链接更多精彩内容