• 设计模式-装饰器模式


    前言

    点击查看:设计模式系列

    装饰器模式(Decorator)

    定义:不通过派生类增改类属性动作,而是通过模式设计动态的达到这种效果,而且比继承更方便灵活减少程序的复杂性。

    举例:

    汪峰打造冠军团队。

    首先团队类为空,经过汪峰不断的努力,为团队争取学员,也为团队队员打造合适的平台,让其发挥。

    团队不断的变强,变完整,是由装饰者,根据不同的需求,给基类进行增改,一致最后赢得你的赞同,满足你的需求。

    实现装配器模式的类图:

    战队组建代码

     //汪峰战队
        abstract class WangFengTeam
        {
            //执行策划命令
            abstract public void Acrion();
        }
    
        //学员
        class Student : WangFengTeam
        {
            // Methods
            override public void Acrion()
            {
                Console.WriteLine("汪峰团队学员情况:");
            }
        }
    
        // 战队总策划
        abstract class Direct : WangFengTeam
        {
            //汪峰战队
            protected WangFengTeam team;
    
            // 策划活动
            public void SetComponent(WangFengTeam team)
            {
                this.team = team;
            }
            //执行策划
            override public void Acrion()
            {
                if (team != null)
                {
                    team.Acrion();
                }
            }
        }
    
        //男孩唱狂放型的,构建一个组合。
        class BoyTeam : Direct
        {
            // 组合名称
            public string teamName= "锋利的Jquery";
    
            //具体策划
            override public void Acrion()
            {
                base.Acrion();
                Console.WriteLine("我是汪峰团队,狂放型的。");
            }
        }
    
        //女孩唱婉约型的,来个模特表演
        class GrilTeam : Direct
        {
            //具体策划
            override public void Acrion()
            {
                base.Acrion();           
    
                Console.WriteLine("我是汪峰团队,婉约型的。");
    
                //模特表演
                show();
            }
    
            public void show()
            {
                Console.WriteLine("婉约型,走秀");
            }
        }

    客户端代码:

     public static void Main()
            {
                Student team = new Student();
                BoyTeam boy = new BoyTeam();
                GrilTeam girl = new GrilTeam();
    
                //团队男孩装饰
                boy.SetComponent(team);
                //团队女孩装饰
                girl.SetComponent(boy);
                girl.Acrion();
                Console.Read();
            }

    装饰器模式理解

    动态扩展类功能属性,而无需通过继承层次结构实现,这改变啦一些继承类的不足之处,也更方便灵活给类添加职责方式。但是装饰器模式在使用过程中,也会给维护人员带来烦恼,因为他会产生许多小的对象,让你头痛欲裂,所以,代码注释,还有代码条理一定要整理清楚,以防给后期维护人员带来,看着蛋疼的代码。

    希望你能运行下代码,根据运行次序去理解每一个设计模式,多思考,多探讨

    欢迎加入博客左上方群,交流探讨,设计模式,数据库,c#.net,数据结构。 

  • 相关阅读:
    poj3720
    poj3099
    poj3734
    poj3112
    poj3723
    十二个开源UML工具推荐
    关于大型asp.net应用系统的架构—如何做到高性能高可伸缩性
    读《中央确定西部新十年战略》有感
    DirectShow基础编程 最简单的源Filter的编写步骤
    Access2007无法执行查询,操作或事件已被禁用模式阻止
  • 原文地址:https://www.cnblogs.com/knowledgesea/p/3942169.html
Copyright © 2020-2023  润新知