装饰器模式,也叫又叫装饰者模式,顾名思义,将一个对象进行包裹,包装,让它变成一个比较满意的对象,这种模式在我们平时项目开发中,经常会用到,事实上,它是处理问题的一种技巧,也很好的扩展了程序,让程序代码不那么死板!
何时能用到它?
1. 需要扩展一个类的功能,或给一个类添加附加职责。
2. 需要动态的给一个对象添加功能,这些功能可以再动态的撤销。
3. 需要增加由一些基本功能的排列组合而产生的非常大量的功能,从而使继承关系变的不现实。
4. 当不能采用生成子类的方法进行扩充时。
其中我们认为第四种使用是比较巧妙的,这一讲中,主要是以第四讲为例来说明的
装饰器模式的结构图
aaarticlea/png;base64,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" alt="" />
装饰器模式实现说明
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();
} public void Run(Action<int> action)
{
new DelegateAction(action).Print();
} }
#endregion
调用的代码
Implement implement = new Implement();
implement.Run((a) => Console.WriteLine(a));//委托Action<int>调用法
implement.Run(new standardAction());//IAction对象调用法