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#程序设计有所帮助。