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

  设计模式---组合模式(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();
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值