| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- using System;
- using System.Collections.Generic;
- namespace CompositePattern
- {
- /// <summary>
- /// 组织架构
- /// </summary>
- public abstract class Organization
- {
- /// <summary>
- /// 成员姓名
- /// </summary>
- public string MemberName { get; set; }
- /// <summary>
- /// 成员职位
- /// </summary>
- public string MemberPosition { get; set; }
- /// <summary>
- /// 直接上级
- /// </summary>
- 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);
- }
- }
- /// <summary>
- /// 部门
- /// </summary>
- public class Department : Organization
- {
- private readonly List<Organization> _organizationInfo = new List<Organization>();
- 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<Organization> GetDepartmentMembers()
- {
- return _organizationInfo;
- }
- }
- /// <summary>
- /// 员工
- /// </summary>
- public class Member : Organization
- {
- }
- }
|