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!");
            }
        }
  • 相关阅读:
    [ARC 102D]All Your Paths are Different Lengths
    [NOI 2016] 优秀的拆分
    [TJOI 2015] 线性代数
    [LUOGU 4717] 快速沃尔什变换
    [NOI 2006] 最大获利
    Javascript继承机制的设计
    必应输入法产品分析
    你不得不知道的HTML5的新型标签
    Mobile Web
    10行代码爬取网页
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1283687.html
Copyright © 2011-2022 走看看