在顯示樹形結構時,復合模式有很好的體現。本篇顯示如下部門結構:

以上,有的節點包含子節點,有的節點部包含子節點。不管是什么節點,每個節點就代表一個部門。
首先設計一個關于部門的抽象基類。
public abstract class DepartmentComponent{public string Name { PRivate set; get; }public DepartmentComponent(string name){this.Name = name;}public virtual void PrintSupervisorOf(int spacing){for (int counter = 0; counter < spacing; counter++){Console.Write(" ");}Console.WriteLine(Name);}}
以上,通過構造函數給屬性賦值,通過PrintSupervisorOf(int spacing)方法打印出節點的名稱。
接下來設計包含子節點的節點。該類維護著DepartmentComponent類型的集合,提供方法向這個集合中添加節點或從集合中刪除節點。
public class DepartmentComposite : DepartmentComponent{private IList<DepartmentComponent> employees;public DepartmentComposite(string name) : base(name){employees = new List<DepartmentComponent>();}public void AddDepartment(DepartmentComponent e){employees.Add(e);}public void RemoveDepartment(DepartmentComponent e){employees.Remove(e);}public override void PrintSupervisorOf(int spacing)
新聞熱點
疑難解答