装饰器模式

Posted MojoJojo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了装饰器模式相关的知识,希望对你有一定的参考价值。

7种结构型模式:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

装饰器模式:动态的给一个对象添加额外的功能,被装饰对象和装饰对象必须实现同一个接口,装饰对象持有被装饰对象的实例。

 

 

//被装饰类和装饰类都要实现的接口
    public interface ISource {
        void DoSomething();
    }

    //被装饰类
    public class Source : ISource
    {
        public void DoSomething()
        {
            Console.WriteLine("原始方法");
        }
    }

    //装饰类
    public class Decorator : ISource
    {
        ISource source;

        //通过构造函数注入需要装饰的对象,使装饰对象持有被砖石对象
        public Decorator(ISource source) {
            this.source = source;
        }
        public void DoSomething()
        {
            //在这里动态的增加新功能
            Console.WriteLine("新增的功能");
            source.DoSomething();
            Console.WriteLine("也是新增的功能");
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            ISource source = new Source();
            ISource decorator = new Decorator(source);
            decorator.DoSomething();
            Console.Read();
        }
    }

  

 

以上是关于装饰器模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之装饰器模式

装饰器模式问题 - 如何调用嵌套装饰器方法?

学习设计模式之装饰器模式

装饰器模式

PHP 装饰器模式

设计模式之装饰器模式