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
{
}
}