C#组合模式实例详解
本文实例讲述了C#组合模式。分享给大家供大家参考。具体如下:
Company.cs如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceConsoleApplication1
{
publicabstractclassCompany
{
protectedstringname;
publicCompany(stringname)
{
this.name=name;
}
publicabstractvoidAdd(Companyc);
publicabstractvoidRemove(Companyc);
publicabstractvoidDisplay(intdepth);
publicabstractvoidLineOfDuty();
}
}
ConcreteCompany.cs如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceConsoleApplication1
{
publicclassConcreteCompany:Company
{
privateList<Company>children=newList<Company>();
publicConcreteCompany(stringname)
:base(name)
{}
publicoverridevoidAdd(Companyc)
{
children.Add(c);
}
publicoverridevoidRemove(Companyc)
{
children.Remove(c);
}
publicoverridevoidDisplay(intdepth)
{
Console.WriteLine(newString('-',depth)+name);
foreach(Companycomponentinchildren)
{
component.Display(depth+2);
}
}
publicoverridevoidLineOfDuty()
{
foreach(Companycomponentinchildren)
{
component.LineOfDuty();
}
}
}
}
FinanceDepartment.cs如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceConsoleApplication1
{
publicclassFinanceDepartment:Company
{
publicFinanceDepartment(stringname):base(name){}
publicoverridevoidAdd(Companyc)
{
}
publicoverridevoidRemove(Companyc)
{
}
publicoverridevoidDisplay(intdepth)
{
Console.WriteLine(newString('-',depth)+name);
}
publicoverridevoidLineOfDuty()
{
Console.WriteLine("{0}财务支付管理",name);
}
}
}
HRdepartment.cs如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceConsoleApplication1
{
publicclassHRdepartment:Company
{
publicHRdepartment(stringname)
:base(name)
{}
publicoverridevoidAdd(Companyc)
{
}
publicoverridevoidRemove(Companyc)
{
}
publicoverridevoidDisplay(intdepth)
{
Console.WriteLine(newString('-',depth)+name);
}
publicoverridevoidLineOfDuty()
{
Console.WriteLine("{0}招聘培训管理",name);
}
}
}
Program.cs如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
namespaceConsoleApplication1
{
classProgram
{
staticvoidMain(string[]args)
{
ConcreteCompanyroot=newConcreteCompany("北京总共司");
root.Add(newHRdepartment("人力部"));
root.Add(newFinanceDepartment("财务部"));
ConcreteCompanycomp=newConcreteCompany("上海分公司");
comp.Add(newHRdepartment("分工司人力部"));
comp.Add(newFinanceDepartment("分公司财务部"));
root.Add(comp);
ConcreteCompanycomp1=newConcreteCompany("南京分部");
comp1.Add(newHRdepartment("南京人力部"));
comp1.Add(newFinanceDepartment("南京财务部"));
comp.Add(comp1);
ConcreteCompanycomp2=newConcreteCompany("杭洲分部");
comp2.Add(newHRdepartment("杭州人事部"));
comp2.Add(newFinanceDepartment("杭州财务部"));
comp.Add(comp2);
root.Display(1);
Console.ReadKey();
}
}
}
希望本文所述对大家的C#程序设计有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下