装饰器模式
2011-06-19 18:07
274 查看
“装饰器”,顾名思义,就是在现有的对象上附加新的东西。实现装饰器模式的要点就是装饰器在继承类的同时又包含它的实例。该模式有如下优点:
原始对象对装饰一无所知。
不需要引入一个包含各种装饰选项的特性类。
多个装饰类之间彼此独立。
多个装饰器之间可以以一种mix-and-match的方式组合到一起。
模式UML设计图
.png]
Component:操作将被增加或更改的原始类(可能有多个这样的类)。
Operation
ICompenent对象中的一个可被替换的操作(可能有多个操作)。
IComponent
(Component是其中的一种)。
Decorator:一个符合IComponent接口并添加状态和行为的类(可能有多个这样的类)。
模式理论代码
public class DecoratorPattern
{
interface IComponent
{
string Operation();
}
class Component : IComponent
{
public string Operation()
{
return "I am walking";
}
}
class Decorator : IComponent
{
IComponent component;
public Decorator(IComponent c)
{
component = c;
}
public string Operation()
{
string s = component.Operation();
s += "and listening to Classic FM";
return s;
}
}
}
原始对象对装饰一无所知。
不需要引入一个包含各种装饰选项的特性类。
多个装饰类之间彼此独立。
多个装饰器之间可以以一种mix-and-match的方式组合到一起。
模式UML设计图
.png]
Component:操作将被增加或更改的原始类(可能有多个这样的类)。
Operation
ICompenent对象中的一个可被替换的操作(可能有多个操作)。
IComponent
(Component是其中的一种)。
Decorator:一个符合IComponent接口并添加状态和行为的类(可能有多个这样的类)。
模式理论代码
public class DecoratorPattern
{
interface IComponent
{
string Operation();
}
class Component : IComponent
{
public string Operation()
{
return "I am walking";
}
}
class Decorator : IComponent
{
IComponent component;
public Decorator(IComponent c)
{
component = c;
}
public string Operation()
{
string s = component.Operation();
s += "and listening to Classic FM";
return s;
}
}
}