/// <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();
}
}