本文实例讲述了C#组合模式。分享给大家供大家参考。具体如下:
Company.cs如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public abstract class Company
{
protected string name;
public Company(string name)
{
this.name = name;
}
public abstract void Add(Company c);
public abstract void Remove(Company c);
public abstract void Display(int depth);
public abstract void LineOfDuty();
}
}
ConcreteCompany.cs如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class ConcreteCompany:Company
{
private List<Company> children = new List<Company>();
public ConcreteCompany(string name)
:base(name)
{}
public override void Add(Company c)
{
children.Add(c);
}
public override void Remove(Company c)
{
children.Remove(c);
}
public override void Display(int depth)
{
Console.WriteLine(new String(\'-\',depth)+name);
foreach(Company component in children)
{
component.Display(depth+2);
}
}
public override void LineOfDuty()
{
foreach(Company component in children)
{
component.LineOfDuty();
}
}
}
}
FinanceDepartment.cs如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class FinanceDepartment:Company
{
public FinanceDepartment(string name) : base(name) { }
public override void Add(Company c)
{
}
public override void Remove(Company c)
{
}
public override void Display(int depth)
{
Console.WriteLine(new String(\'-\',depth)+name);
}
public override void LineOfDuty()
{
Console.WriteLine(\"{0} 财务支付管理\",name);
}
}
}
HRdepartment.cs如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
public class HRdepartment:Company
{
public HRdepartment(string name)
:base(name)
{ }
public override void Add(Company c)
{
}
public override void Remove(Company c)
{
}
public override void Display(int depth)
{
Console.WriteLine(new String(\'-\',depth)+name);
}
public override void LineOfDuty()
{
Console.WriteLine(\"{0} 招聘培训管理\",name);
}
}
}
Program.cs如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
ConcreteCompany root = new ConcreteCompany(\"北京总共司\");
root.Add(new HRdepartment(\"人力部\"));
root.Add(new FinanceDepartment(\"财务部\"));
ConcreteCompany comp = new ConcreteCompany(\"上海分公司\");
comp.Add(new HRdepartment(\"分工司人力部\"));
comp.Add(new FinanceDepartment(\"分公司财务部\"));
root.Add(comp);
ConcreteCompany comp1 = new ConcreteCompany(\"南京分部\");
comp1.Add(new HRdepartment(\"南京人力部\"));
comp1.Add(new FinanceDepartment(\"南京财务部\"));
comp.Add(comp1);
ConcreteCompany comp2 = new ConcreteCompany(\"杭洲分部\");
comp2.Add(new HRdepartment(\"杭州人事部\"));
comp2.Add(new FinanceDepartment(\"杭州财务部\"));
comp.Add(comp2);
root.Display(1);
Console.ReadKey();
}
}
}
希望本文所述对大家的C#程序设计有所帮助。
本文地址:https://www.stayed.cn/item/13226
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我