首页 > 编程 > C# > 正文

C#组合模式实例详解

2019-10-29 21:40:51
字体:
来源:转载
供稿:网友

这篇文章主要介绍了C#组合模式,实例分析了C#实现组合模式的原理与相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C#组合模式。分享给大家供大家参考。具体如下:

Company.cs如下:

 

 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. namespace ConsoleApplication1 
  6. public abstract class Company 
  7. protected string name; 
  8. public Company(string name)  
  9. this.name = name; 
  10. public abstract void Add(Company c); 
  11. public abstract void Remove(Company c); 
  12. public abstract void Display(int depth); 
  13. public abstract void LineOfDuty(); 

ConcreteCompany.cs如下:

 

 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. namespace ConsoleApplication1 
  6. public class ConcreteCompany:Company 
  7. private List<Company> children = new List<Company>(); 
  8. public ConcreteCompany(string name)  
  9. :base(name) 
  10. {} 
  11. public override void Add(Company c) 
  12. children.Add(c); 
  13. public override void Remove(Company c) 
  14. children.Remove(c); 
  15. public override void Display(int depth) 
  16. Console.WriteLine(new String('-',depth)+name); 
  17. foreach(Company component in children) 
  18. component.Display(depth+2); 
  19. public override void LineOfDuty() 
  20. foreach(Company component in children) 
  21. component.LineOfDuty(); 

FinanceDepartment.cs如下:

 

 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. namespace ConsoleApplication1 
  6. public class FinanceDepartment:Company 
  7. public FinanceDepartment(string name) : base(name) { } 
  8. public override void Add(Company c) 
  9. public override void Remove(Company c) 
  10.  
  11. public override void Display(int depth) 
  12. Console.WriteLine(new String('-',depth)+name); 
  13. public override void LineOfDuty() 
  14. Console.WriteLine("{0} 财务支付管理",name); 

HRdepartment.cs如下:

 

 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. namespace ConsoleApplication1 
  6. public class HRdepartment:Company 
  7. public HRdepartment(string name) 
  8. :base(name) 
  9. { } 
  10. public override void Add(Company c) 
  11. public override void Remove(Company c) 
  12. public override void Display(int depth) 
  13. Console.WriteLine(new String('-',depth)+name); 
  14. public override void LineOfDuty() 
  15. Console.WriteLine("{0} 招聘培训管理",name); 

Program.cs如下:

 

 
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.Linq; 
  4. using System.Text; 
  5. namespace ConsoleApplication1 
  6. class Program 
  7. static void Main(string[] args) 
  8. ConcreteCompany root = new ConcreteCompany("北京总共司"); 
  9. root.Add(new HRdepartment("人力部")); 
  10. root.Add(new FinanceDepartment("财务部")); 
  11. ConcreteCompany comp = new ConcreteCompany("上海分公司"); 
  12. comp.Add(new HRdepartment("分工司人力部")); 
  13. comp.Add(new FinanceDepartment("分公司财务部")); 
  14. root.Add(comp); 
  15. ConcreteCompany comp1 = new ConcreteCompany("南京分部"); 
  16. comp1.Add(new HRdepartment("南京人力部")); 
  17. comp1.Add(new FinanceDepartment("南京财务部")); 
  18. comp.Add(comp1); 
  19. ConcreteCompany comp2 = new ConcreteCompany("杭洲分部"); 
  20. comp2.Add(new HRdepartment("杭州人事部")); 
  21. comp2.Add(new FinanceDepartment("杭州财务部")); 
  22. comp.Add(comp2); 
  23. root.Display(1); 
  24. Console.ReadKey(); 

希望本文所述对大家的C#程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表