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