装饰器设计模式

来源:互联网 发布:视频压缩简易算法 编辑:程序博客网 时间:2024/05/22 11:45

   装饰者模式的适用场景

                 1、在不影响其他对象的情况下,以动态、透明的方式给单个对象添加职责。

                 2、需要动态地给一个对象增加功能,这些功能也可以动态地被撤销。  当不能采用继承的方式对系统进行扩充或者采用继承不利于系统扩展和维护时。

参与者:

Component: 抽象构件,可以给这些对象动态地添加职责。

ConcreteComponent:具体构件。是定义了一个具体的对象,也可以给这个对象添加一些职责。

Decorator: 抽象装饰类。是装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator存在的。

ConcreteDecorator:具体装饰类,起到给Component添加职责的功能。

namespace 装饰器模式{ //抽象构件,可以给这些对象动态地添加职责。    public abstract class BaseGame    {        public abstract void Show();//显示一下穿的装备    }}
    class Magic : BaseGame    {//具体构件。是定义了一个具体的对象,也可以给这个对象添加一些职责。        public override void Show()        {            Console.WriteLine(@"我叫Way,我是一个裸装法师.");        }    }
    class BaseDecorator : BaseGame    {//抽象装饰类。是装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator存在的。        private readonly BaseGame _game = null;        public BaseDecorator(BaseGame game)        {//结构型设计模式的标配            _game = game;        }        public override void Show()        {            _game.Show();        }    }
    class 带头盔 : BaseDecorator    {//具体装饰类,起到给Component添加职责的功能。        public 带头盔(BaseGame gm) : base(gm)//表示调用父类带参数的构造函数        { }        public override void Show()        {            base .Show();            Console.WriteLine(@"获得了一个青铜头盔.");        }    }

最后结果






原创粉丝点击