• 设计模式 Vs实践-3 装饰器模式


    装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

    这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。示例参考大话设计模式中代码

    class Person
        {
            public Person()
            {
    
            }
    
            private string name;
    
            public Person(string name)
            {
                this.name = name;
            }
    
            public virtual void Show()
            {
                Console.WriteLine("装扮的{0}",name);
            }
        }
    class Finery:Person
    {
        protected Person component;
    
        public void Decorate(Person component)
        {
            this.component = component;
        }
    
        public override void Show()
        {
            if (Equals(component!=null))
            {
                component.Show();;
            }
        }
    }
    class TShirts:Finery
    {
        public override void Show()
        {
            Console.Write("TShirts ");
            base.Show();
        }
    }
    class Trouser : Finery
    {
        public override void Show()
        {
            Console.Write("Trouser ");
            base.Show();
        }
    }
    static void Main(string[] args)
    {
        Person person=new Person("张三");
        person.Show();
        TShirts tShirts=new TShirts();
        Trouser trouser=new Trouser();
        tShirts.Decorate(person);
        tShirts.Show();
        trouser.Decorate(person);
        trouser.Show();
        Console.ReadLine();
    }

    输出结果:

    装扮的张三
    TShirts Trouser

    给张三穿上TShirt,Trouser,并使TShirt,Trouser显示出来。原书中代码只有最后一个Show()是不会显示TShirt的,除非将每次装饰使用列表保存下来。

  • 相关阅读:
    SCI论文写作中一些常见的用词不当
    英语医学论文SCI写作/医学翻译中的常见错误
    SCI写作的20例常见错误集锦
    sci写作结构总结二——整体结构逻辑
    关于 mysql 优化 -------复合索引的一些见解
    win10系统没有Hyper-v解决办法
    win10 docker 安装redis activemq,mysql等。
    win10环境下的docker 设置镜像
    win10 安装docker
    jquery瀑布流
  • 原文地址:https://www.cnblogs.com/zhaogaojian/p/12504131.html
Copyright © 2020-2023  润新知