• eventdelegate经典例子(猫叫)


    上一次说过经典面试题:
    "猫叫,老鼠跑,主人惊醒"
    在观察者模式下的实现时,提到该题还可通过"事件-委托"来实现.下面给出代码(摘录)
    public delegate void CryEventHandler();
        
    //step1 抽象事件引发者(猫)类,引发CryEventHandler类型的事件
        public abstract class Subject
        {
            
    public event CryEventHandler CryEvent;
            
    protected void FireEvent()  //不需要被子类实现
            {
                
    if(CryEvent!=null)
                {
                    
    this.CryEvent();
                }
            }
        }
        
    //实现猫类,并通过Cry方法引发事件
        public class Cat:Subject
        {
            
    public void Cry()
            {
                Console.WriteLine(
    "Cat Cryed!");
                
    this.FireEvent();
            }
        }
        
    //抽象观察者基类
        public abstract class Observer
        {
            
    public Observer(Subject sub)
            {
                sub.CryEvent
    +=new CryEventHandler(this.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(
    "Cat Cryed!"+name+" Run!");
            }
        }
         
    public class Master:Observer
        {
            
    private string name;
            
    public Master(string name,Subject sub):base(sub)
            {
                
    this.name=name;
            }
            
    public override void  Response()
            {
                Console.WriteLine(
    "Cat Cryed!"+name+" WeakUP!");
            }
        }
  • 相关阅读:
    Cornfields POJ
    二维RMQ模板
    降雨量 HYSBZ
    Frequent values UVA
    UVA
    Argus UVALive
    关于二分图有向边和无向边问题探讨
    Guardian of Decency UVALive
    SAM I AM UVA
    【062新题】OCP 12c 062出现大量新题-15
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1283687.html
Copyright © 2020-2023  润新知