设计模式-装饰器模式

前言

点击查看:设计模式系列

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

你可能感兴趣的:(装饰器模式)