本文實例講述了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#程序設計有所幫助。
新聞熱點
疑難解答