设计模式---组合模式(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();
}
}
}
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();
}
}
}
相关文章推荐
- 设计模式---备忘录模式(CSDN没有恢复迹象......)
- 设计模式学习—组合实体模式(Composite Entity Design Pattern)
- 设计模式之-----组合模式
- 【设计模式】分公司是一个部门? ---- 组合模式
- java设计模式-组合模式(Composite)
- 窥视设计模式之组合模式(composite)
- Java开发中的23种设计模式详解----组合模式(Composite)
- C语言和设计模式(之组合模式)
- java设计模式(工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式、适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式,。 行为型模式,共十一种:策略模式、模板方法)
- .NET中的设计模式三:组合模式 选择自 lane_cn 的 Blog
- java设计模式之组合模式
- 设计模式---->组合/聚合复用原则
- 设计模式-组合模式
- 设计模式阅读备忘笔记-组合模式
- 批注:C++设计模式——组合模式:树-层级
- 2010年11月份软件设计师:设计模式(观察者模式,组合模式)
- 设计模式之组合模式
- head first 设计模式学习随笔(10)----组合模式
- IOS设计模式学习(13)组合
- [设计模式] javascript 之 组合模式