zoukankan      html  css  js  c++  java
  • 设计模式-装饰器模式

    前言

    点击查看:设计模式系列

    装饰器模式(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,数据结构。 

  • 相关阅读:
    用户价值和RFM模型
    产品生命周期(Product Life Circle,PLC)
    金字塔原理(Pyramid Principle)
    docker 技术
    网易实战+scrapy-redis配置
    uiautomator工具使用(7)
    adb命令行工具(6)
    Android 开发工具安装(5)
    appium 移动端自动化测试工具(4)
    mitmdump 详解(3)
  • 原文地址:https://www.cnblogs.com/knowledgesea/p/3942169.html
Copyright © 2011-2022 走看看