using System; using System.Collections.Generic; namespace CompositePattern { /// /// 组织架构 /// public abstract class Organization { /// /// 成员姓名 /// public string MemberName { get; set; } /// /// 成员职位 /// public string MemberPosition { get; set; } /// /// 直接上级 /// public Organization ParentNode { get; set; } public void Display() { var basicInfo = string.Format("姓名:{0},职位:{1}", MemberName, MemberPosition); var parentInfo = ParentNode == null ? "" : string.Format(",直接上级:『姓名:{0},职位:{1}』", ParentNode.MemberName, ParentNode.MemberPosition); Console.WriteLine(basicInfo + parentInfo); } } /// /// 部门 /// public class Department : Organization { private readonly List _organizationInfo = new List(); public Department(string departmentName, string charge) { MemberPosition = departmentName; MemberName = charge; } public void Add(Organization org) { _organizationInfo.Add(org); org.ParentNode = this; } public void Remove(Organization org) { _organizationInfo.Remove(org); } public List GetDepartmentMembers() { return _organizationInfo; } } /// /// 员工 /// public class Member : Organization { } }