猫叫,老鼠跑,主人醒(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();
        }
    }
}

 

posted on 2010-07-16 10:57  晴天1848  阅读(240)  评论(0)    收藏  举报