猫叫,老鼠跑,主人醒(event-delegate实现)
using System;
using System.Collections.Generic;
using System.Text;
namespace EventDelegate
{
public delegate void SubEventHandle();//委托定义
/// <summary>
/// 发出动作的类
/// </summary>
public abstract class Subject
{
public event SubEventHandle SubEvent;//事件定义
protected void FireAway()
{
if (this.SubEvent!=null)
this.SubEvent();
}
}
public class Cat:Subject
{
public void Cry()
{
Console.WriteLine("Cat Cry");
this.FireAway();
}
}
public abstract class Observer
{
public Observer(Subject sub)
{
sub.SubEvent += new SubEventHandle(Response);
}
public abstract void Response();
}
public class Mouse:Observer
{
private string name;
public Mouse(string name,Subject sub):base(sub)
{
this.name = name;
}
public override void Response()
{
Console.WriteLine("The Mouse " + name + " attempt to escape!");
}
}
public class Master:Observer
{
private string name;
public Master(string name,Subject sub):base(sub)
{
this.name = name;
}
public override void Response()
{
Console.WriteLine("The Master "+name+" is wakeup!");
}
}
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("zhan", cat);
Mouse mouse2 = new Mouse("hua",cat);
Master master = new Master("tao",cat);
cat.Cry();
}
}
}
using System.Collections.Generic;
using System.Text;
namespace EventDelegate
{
public delegate void SubEventHandle();//委托定义
/// <summary>
/// 发出动作的类
/// </summary>
public abstract class Subject
{
public event SubEventHandle SubEvent;//事件定义
protected void FireAway()
{
if (this.SubEvent!=null)
this.SubEvent();
}
}
public class Cat:Subject
{
public void Cry()
{
Console.WriteLine("Cat Cry");
this.FireAway();
}
}
public abstract class Observer
{
public Observer(Subject sub)
{
sub.SubEvent += new SubEventHandle(Response);
}
public abstract void Response();
}
public class Mouse:Observer
{
private string name;
public Mouse(string name,Subject sub):base(sub)
{
this.name = name;
}
public override void Response()
{
Console.WriteLine("The Mouse " + name + " attempt to escape!");
}
}
public class Master:Observer
{
private string name;
public Master(string name,Subject sub):base(sub)
{
this.name = name;
}
public override void Response()
{
Console.WriteLine("The Master "+name+" is wakeup!");
}
}
class Program
{
static void Main(string[] args)
{
Cat cat = new Cat();
Mouse mouse1 = new Mouse("zhan", cat);
Mouse mouse2 = new Mouse("hua",cat);
Master master = new Master("tao",cat);
cat.Cry();
}
}
}
浙公网安备 33010602011771号