设计模式---组合模式(CSDN依然没有恢复迹象......)
using System;
using System.Collections.Generic;
using System.Text;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
abstract class AbstractCompany
{
protected String Name;
public AbstractCompany(string name)
{
this.Name = name;
}
{
abstract class AbstractCompany
{
protected String Name;
public AbstractCompany(string name)
{
this.Name = name;
}
public abstract void Add(AbstractCompany c);
public abstract void Remove(AbstractCompany c);
public abstract void Show(int len);
public abstract void DoJob();
}
}
class RealCompany:AbstractCompany
{
private IList< AbstractCompany> Son=new List<AbstractCompany>();
public RealCompany(string name):base(name){}
{
private IList< AbstractCompany> Son=new List<AbstractCompany>();
public RealCompany(string name):base(name){}
public override void Add(AbstractCompany c)
{
Son.Add(c);
}
{
Son.Add(c);
}
public override void DoJob()
{
Console.WriteLine(Name+"公司正常运转");
foreach (AbstractCompany a in Son)
{
a.DoJob();
}
}
{
Console.WriteLine(Name+"公司正常运转");
foreach (AbstractCompany a in Son)
{
a.DoJob();
}
}
public override void Remove(AbstractCompany c)
{
Son.Remove(c);
}
{
Son.Remove(c);
}
public override void Show(int len)
{
Console.WriteLine(new String('-',len)+Name);
foreach (AbstractCompany a in Son)
{
a.Show(len+1);
}
}
}
{
Console.WriteLine(new String('-',len)+Name);
foreach (AbstractCompany a in Son)
{
a.Show(len+1);
}
}
}
class HR:AbstractCompany
{
public HR(string name) : base(name) { }
{
public HR(string name) : base(name) { }
public override void Add(AbstractCompany c)
{
}
{
}
public override void DoJob()
{
Console.WriteLine(Name + "人事部正常运转");
}
{
Console.WriteLine(Name + "人事部正常运转");
}
public override void Remove(AbstractCompany c)
{
}
{
}
public override void Show(int len)
{
Console.WriteLine(new string('-', len) + Name);
}
}
{
Console.WriteLine(new string('-', len) + Name);
}
}
class Client
{
public static void Main()
{
AbstractCompany root = new RealCompany("总公司");
root.Add(new HR("总公司人事部"));
{
public static void Main()
{
AbstractCompany root = new RealCompany("总公司");
root.Add(new HR("总公司人事部"));
RealCompany r=new RealCompany("分公司");
r.Add(new HR("分公司人事部"));
r.Add(new HR("分公司人事部"));
root.Add(r);
root.Show(1);
root.DoJob();
root.DoJob();
Console.Read();
}
}
}
}
}
}