首页 > 其他 > 详细

说说设计模式~装饰器模式(Decorator)

时间:2014-08-05 11:01:19      阅读:379      评论:0      收藏:0      [点我收藏+]

装饰器模式,也叫又叫装饰者模式,顾名思义,将一个对象进行包裹,包装,让它变成一个比较满意的对象,这种模式在我们平时项目开发中,经常会用到,事实上,它是处理问题的一种技巧,也很好的扩展了程序,让程序代码不那么死板!

何时能用到它?

1. 需要扩展一个类的功能,或给一个类添加附加职责。

2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。

3. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。

4. 当不能采用生成子类的方法进行扩充时。

其中我们认为第四种使用是比较巧妙的,这一讲中,主要是以第四讲为例来说明的

装饰器模式的结构图

bubuko.com,布布扣

装饰器模式实现说明

IAction:装饰器标准插口,所有装饰功能都要实现它

DelegateAction:装饰类,用来实现IAction插口的功能,并对外部提供另一种表现形式

StandardAction:标准实现类,用来实现IAction插口的功能,对外展示也是以IAction接口为准的

Implement:对外公开的调用类,它向外界公开两种接口方法,一是IAction接口标准,一是Action<int>委托标准

装饰器模式的C#实现

#region 装饰模式
    public interface IAction
    {
        void Print(int a);
    }
    sealed class DelegateAction : IAction
    {
        Action<int> _action;
        public DelegateAction(Action<int> action)
        {
            _action = action;

        }
        public void Print(int a)
        {
            _action(a);
        }
    }

    public class standardAction : IAction
    {
        public void Print(int a)
        {
            Console.WriteLine("标准实现装饰器" + a);
        }
    }
    public class Implement
    {
        public void Run(IAction action)
        {
            action.Print(10);
        }

        public void Run(Action<int> action)
        {
            new DelegateAction(action).Print(10);
        }

    }
    #endregion

调用的代码

 Implement implement = new Implement();
 implement.Run((a) => Console.WriteLine(a));//委托Action<int>调用法
 implement.Run(new standardAction());//IAction对象调用法

 

说说设计模式~装饰器模式(Decorator),布布扣,bubuko.com

说说设计模式~装饰器模式(Decorator)

原文:http://www.cnblogs.com/lori/p/3891670.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!