/// <summary>
/// 抽象界面构件类:抽象构件类
/// </summary>
public abstract class Component
{
public abstract void Display();
}
(2)具体构件:Window, TextBox 和 ListBox
/// <summary>
/// 窗体类:具体构件类
/// </summary>
public class Window : Component
{
public override void Display()
{
Console.WriteLine("显示窗体!");
}
}
/// <summary>
/// 文本框类:具体构件类
/// </summary>
public class TextBox : Component
{
public override void Display()
{
Console.WriteLine("显示文本框!");
}
}
/// <summary>
/// 列表框类:具体构件类
/// </summary>
public class ListBox : Component
{
public override void Display()
{
Console.WriteLine("显示列表框!");
}
}
(3)抽象装饰:ComponentDecorator
/// <summary>
/// 构件装饰类:抽象装饰类
/// </summary>
public class ComponentDecorator : Component
{
private Component component;
public ComponentDecorator (Component component)
{
this.component = component;
}
public override void Display()
{
component.Display();
}
}
(4)具体装饰:ScrollBarDecorator 和 BlackBorderDecorator
/// <summary>
/// 滚动条装饰类:具体装饰类
/// </summary>
public class ScrollBarDecorator : ComponentDecorator
{
public ScrollBarDecorator(Component component) : base(component)
{
}
public override void Display()
{
this.SetScrollBar();
base.Display();
}
public void SetScrollBar()
{
Console.WriteLine("为构件增加滚动条!");
}
}
/// <summary>
/// 黑色边框装饰类:具体装饰类
/// </summary>
public class BlackBorderDecorator : ComponentDecorator
{
public BlackBorderDecorator(Component component) : base(component)
{
}
public override void Display()
{
this.SetScrollBar();
base.Display();
}
public void SetScrollBar()
{
Console.WriteLine("为构件增加黑色边框!");
}
}
(5)客户端测试
public class Program
{
public static void Main(string[] args)
{
Component component = new Window();
// 一次装饰
Component componentSB = new ScrollBarDecorator(component);
componentSB.Display();
Console.WriteLine();
// 二次装饰
Component componentBB = new BlackBorderDecorator(componentSB);
componentBB.Display();
Console.ReadKey();
}
}