您的位置:首页 > 其它

设计模式---组合模式(CSDN依然没有恢复迹象......)

2008-08-18 18:43 639 查看
 设计模式---组合模式(CSDN依然没有恢复迹象......)


using System;
using System.Collections.Generic;
using System.Text;
namespace ConsoleApplication1
{
    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){}
        public override void Add(AbstractCompany c)
        {
            Son.Add(c);
        }
        public override void DoJob()
        {
            Console.WriteLine(Name+"公司正常运转");
            foreach (AbstractCompany a in Son)
            {
                a.DoJob();
            }
        }
        public override void Remove(AbstractCompany 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);
            }
        }
    }
    class HR:AbstractCompany
    {
        public HR(string name) : base(name) { }
        public override void Add(AbstractCompany c)
        {
           
        }
        public override void DoJob()
        {
            Console.WriteLine(Name + "人事部正常运转");
        }
        public override void Remove(AbstractCompany c)
        {
          
        }
        public override void Show(int len)
        {
            Console.WriteLine(new string('-', len) + Name);
        }
    }
    class Client
    {
        public static void Main()
        {
            AbstractCompany root = new RealCompany("总公司");
            root.Add(new HR("总公司人事部"));
            RealCompany r=new RealCompany("分公司");
            r.Add(new HR("分公司人事部"));
            root.Add(r);
            root.Show(1);
            root.DoJob();
            Console.Read();
        }
    }
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式 string class c