装饰模式:
动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。
using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApp1
{
abstract class Component
{
public abstract void Operation();
}
class ConcreteComponent : Component
{
public override void Operation()
{
Console.WriteLine("具体对对象实现");
}
}
abstract class Docorate : Component
{
protected Component component;
public void SetComponent(Component component)
{
this.component = component;
}
public override void Operation()
{
if (component != null)
{
component.Operation();
}
}
}
class ConcreteDecoatorA : Docorate
{
public override void Operation()
{
base.Operation();
Console.WriteLine("具体装饰对象A操作");
}
}
class ConcreteDecoatorB : Docorate
{
public override void Operation()
{
base.Operation();
Console.WriteLine("具体装饰对象B操作");
}
}
class ConcreteDecoatorC : Docorate
{
public override void Operation()
{
base.Operation();
Console.WriteLine("具体装饰对象C操作");
}
}
class Costume
{
static void Main(string[] args)
{
ConcreteComponent component = new ConcreteComponent();
ConcreteDecoatorA decoatorA = new ConcreteDecoatorA();
ConcreteDecoatorB decoatorB = new ConcreteDecoatorB();
ConcreteDecoatorC decoatorC = new ConcreteDecoatorC();
decoatorA.SetComponent(component);
decoatorB.SetComponent(decoatorA);
decoatorC.SetComponent(decoatorB);
decoatorC.Operation();
}
}
}