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!");
            }
        }
  • 相关阅读:
    查看Linux主机CPU及内存信息
    linux配置java环境变量(详细)
    Linux安装Redis
    Linux关闭防火墙
    使用Unison同步服务器目录
    Nginx详细配置
    CentOS命令行无线上网
    SQL Server查询所有的表名/空间占用量/行数
    CentOS安装Nginx安装详解
    基于 Django 2.0.4 的 djcelery 配置
  • 原文地址:https://www.cnblogs.com/McJeremy/p/1283687.html
Copyright © 2011-2022 走看看