最简单的实现
using System;
using System.Collections.Generic;using System.Text;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
C1 c1 = new C1("c1");
C2 c2 = new C2("c2");
C1and2 cl2 = new C1and2("cls");
cl2.add(c1);
cl2.add(c2);
c1.fun();
c2.fun();
cl2.fun();
System.Console.Read();
}
}
}
public abstract class C
{
public string name;
public C(string str)
{
this.name = str;
}
public abstract void fun();
}
public class C1 : C
{
public C1(string str)
: base(str)
{ }
public override void fun()
{
System.Console.WriteLine(this.name);
}
}
public class C2 : C
{
public C2(string str)
: base(str)
{ }
public override void fun()
{
System.Console.WriteLine(this.name);
}
}
public class C1and2:C
{
protected ArrayList cList = new ArrayList();
public C1and2(string str):base(str)
{}
public override void fun()
{
System.Console.WriteLine("绘制:"+this.name);
foreach (C c in cList)
{
c.fun();
}
}
public void add(C c)
{
cList.Add(c);
}
public void remove(C c)
{
cList.Remove(c);
}
}