zoukankan      html  css  js  c++  java
  • 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!");
            }
        }
  • 相关阅读:
    虚拟主机wordpress文件上传大小限制更改
    wordpress网站迁移
    JavaScript算法相关
    文章阅读(三)
    文章阅读(二)
    Image():强制让图片缓存起来
    JavaScript运算符与类型
    JavaScript权威指南--多媒体和图形编程
    JavaScript权威指南--脚本化HTTP
    JavaScript权威指南--事件处理
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1283687.html
Copyright © 2011-2022 走看看