• 设计模式之装饰模式


        装饰模式:当系统需要新的功能的时候,是向旧的类中添加新的代码。这样新的代码通常装饰了原有类的核心职责或者主要行为。

        优点:把类中的装饰功能从类中搬移去除,这样可以简化原有的类。有效地把类的核心职责和装饰功能分开。而且可以去除相关类中重复的装饰逻辑。

        装饰模式实现穿衣服功能:

       

     class Program
        {
            static void Main(string[] args)
            {
                Person cw = new Person("cw");
                TShirts t = new TShirts();
                BigTrouser b = new BigTrouser();
                t.Decorate(cw);
                b.Decorate(t);
                b.Show();
                Console.ReadKey();
            }
    
    
            public class Person
            {
                public Person()
                {
    
                }
    
                private string _name;
                public Person(string name)
                {
                    _name = name;
                }
    
                public virtual void Show()
                {
                    Console.Write("装扮的{0}",_name);
                }
            }
    
            public class Finery:Person
            {
                protected Person component;
    
                public void Decorate(Person component)
                {
                    this.component = component;
                }
    
                public override void Show()
                {
                   if(component!=null)
                   {
                       component.Show();
                   }
                }
            }
    
            public class TShirts:Finery
            {
                public override void Show()
                {
                    base.Show();
                    Console.Write("大T恤3");
                }
            }
    
            public class BigTrouser:Finery
            {
                public override void Show()
                {
                    base.Show();
                    Console.Write("垮裤");
                }
            }

    代码运行结果:

         

  • 相关阅读:
    深入分析java的clone
    java实现文件夹遍历
    插入排序的C语言实现
    java动态代理工厂类
    HTML 理解标签 帧
    贝塞尔曲线初探
    警告:未初始化的变量引起运行问题
    解释string类型的输入操作符和getline函数分别如何处理空白符
    程序书写规范笔记
    vector
  • 原文地址:https://www.cnblogs.com/weiqiangwaideshijie/p/8031285.html
Copyright © 2020-2023  润新知