### 1. 定义猫类型,并且该类型负责维护猫叫事件 *Cat.cs*

```csharp

using System;

namespace CatCry

{

///

/// 猫类型,维护猫叫事件

///

public class Cat

{

///

/// 猫名

///

private String _name;

///

/// 猫叫的事件

///

public event EventHandler CatCryEvent;

///

/// 构造函数

///

///

public Cat(string name)

{

_name = name;

}

///

/// 触发猫叫事件

///

public void CatCry()

{

CatCryEventArgs args = new CatCryEventArgs(_name);

Console.WriteLine(args);

CatCryEvent(this, args);

}

}

}

```

### 2. 定义猫叫事件的参数 *CatCryEventArgs.cs*

```csharp

using System;

namespace CatCry

{

///

/// 猫叫事件的参数

///

public class CatCryEventArgs : EventArgs

{

///

/// 发出叫声的猫的名字

///

private string _catname;

///

/// 构造函数

///

///

public CatCryEventArgs(string catname) : base()

{

_catname = catname;

}

///

/// 输出参数内容

///

///

public override string ToString()

{

return _catname + "叫了";

}

}

}

```

### 3. 定义猫叫事件的订阅者,即主人类型和老鼠类型

*Master.cs*

```csharp

using System;

namespace CatCry

{

///

/// 主人类型

///

public class Master

{

///

/// 主人名字

///

private string _name;

///

/// 构造方法,订阅事件

///

///

///

public Master(string name, Cat cat)

{

_name = name;

cat.CatCryEvent += CatCryHandler;

}

///

/// 猫叫事件处理方法

///

///

///

private void CatCryHandler(object sender, CatCryEventArgs e)

{

WakeUp();

}

///

/// 惊醒方法

///

private void WakeUp()

{

Console.WriteLine(_name + "醒了");

}

}

}

```

*Mouse.cs*

```csharp

using System;

namespace CatCry

{

///

/// 老鼠类型

///

public class Mouse

{

///

/// 老鼠名字

///

private string _name;

///

/// 构造方法,订阅事件

///

///

///

public Mouse(string name, Cat cat)

{

_name = name;

cat.CatCryEvent += CatCryHandler;

}

///

/// 猫叫事件处理方法

///

///

///

private void CatCryHandler(object sender, CatCryEventArgs e)

{

Run();

}

///

/// 逃跑方法

///

private void Run()

{

Console.WriteLine(_name + "逃走了");

}

}

}

```

### 4. 编写入口方法,模拟场景 *Program.cs*

```csharp

using System;

namespace CatCry

{

class Program

{

static void Main(string[] args)

{

Console.WriteLine("开始模拟");

Cat cat = new Cat("汤姆猫");

Mouse mouse1 = new Mouse("米奇", cat);

Mouse mouse2 = new Mouse("杰瑞", cat);

Master master = new Master("巴金斯", cat);

cat.CatCry();

Console.Read();

}

}

}

```

Java猫叫老鼠跑人惊醒_用代码表示如下情景:猫叫、老鼠逃跑、主人惊醒相关推荐

  1. Java猫叫老鼠跑人惊醒_面试题:猫叫、老鼠跑、人醒的一点看法

    这些天一直在面试中,做着不同的面试题,唉,悲催 上周做的一道面试题今天正好出现在园里的首页,看了一下这位同学的实现,基本上方向是对的,就是代码上细节没有注意,有一些错误,这里我就写一下我的理解 --- ...

  2. 转-观察模式 猫叫鼠跑人醒

    转-观察模式 猫叫鼠跑人醒 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. public interface Observer     {         void Response();    // ...

  3. Java猫叫老鼠跑人惊醒_关于猫叫、老鼠逃跑、人被惊醒的程序设计

    题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. 要求: 1.要有联动性,老鼠和人的行为是被动的 2.考虑可扩展行,猫叫声可能会引起其他联动效应 看到这个程序设计题目,我的第一反应是用事件 ...

  4. 事件模拟场景:猫叫-老鼠逃跑 主人惊醒

    这是一个典型的观察者模式的应用场景,事件的发源在于猫叫这个动作,在猫叫之后,老鼠开始逃跑,而主人则会从睡梦中惊醒.可以发现,主人和老鼠这两个类型的动作相互之间没有联系,但都是由猫叫这一事件触发的. 设 ...

  5. java图片识别人像计算人头数_人头检测代码示例:SVM+HOG

    人头检测代码示例:SVM+HOG 来源:互联网 作者:佚名 时间:2015-03-17 09:17 网上关于HOG的理解以及结合SVM做检测的源码很多,这里我结合自己的理解对他们做一个综述和总结. 最 ...

  6. 观察者模式和委托实现 - 老鼠跑,猫叫,人醒

    老鼠跑,猫叫,人醒是典型的事件联动,解决此种情形,可以利用观察者模式或者事件委托来实现.利用设计模式时要考虑耦合,但利用事件委托的话,就不需要了.因为用委托的话,理解比较容易,这里没有单写,而是将委托 ...

  7. 猫叫人醒老鼠跑 C#的委托及事件

    昨天进行了一下培训,讲解了一下委托跟事件的应用,说实话这个东西听起来还是一头雾水,虽然学会怎么用,但是还没搞明白需要在什么时候用到这个,后来我们经理给我举了个例子,让我做一个经典的委托和事件的例子,就 ...

  8. 一道事件委托面试题 - 猫叫老鼠跑主人醒

    /* 道事件委托面试题 - 猫叫老鼠跑主人醒 */using System;namespace CatCry {class MainClass{static void Main(string[] ar ...

  9. 天天酷跑php源码_使用Java实现天天酷跑(附源码)

    首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...

最新文章

  1. 1m网速是什么意思,1m带宽是什么意思
  2. 初学者易上手的SSH-hibernate04 一对一 一对多 多对多
  3. EMNLP 2019 | 大规模利用单语数据提升神经机器翻译
  4. 【javascript】—— JS判断浏览器类型、操作系统
  5. 19、SQL Server 数据修改之Insert into
  6. Go语言在Linux环境下输出彩色字符
  7. 一个Java多线程练习的调试
  8. [蓝桥杯][2014年第五届真题]排列序数(思维)
  9. 图像傅立叶变换的原理和物理意义
  10. oracle异常:主动抛出自定义异常+捕获指定异常
  11. 在Launcher3的小部件中隐藏Widgets或Shortcuts
  12. allure-report详细使用教程
  13. opencv--轮廓拟合函数 boundingRect(),minAreaRect(),minEnclosingCircle(),fitEllipse(),fitLine()
  14. 酒馆指南:小白开店必备
  15. JavaScript的callee 属性
  16. LCP 2.分式简化
  17. Springboot2.0集成阿里云RocketMQ
  18. 解决div比里面包含的img图片高度大的问题
  19. 凯云水利水电工程造价系统 (四) 配合比单价模块
  20. 腾讯QQ2009常用功能和设置手册

热门文章

  1. Oracle函数篇 - REPLACE()函数
  2. Pandas数据表关联操作
  3. 计算机考试中有关表格的题类型,2021年职称计算机考试中有关电子表格题型试题集.doc...
  4. js读取注册表的键值
  5. 一般复印店复印一张多少钱
  6. 谷歌翻译推出中国市场,这款翻译软件火爆朋友圈
  7. 文章标题 CoderForces 298A: Snow Footprints(水)
  8. 使用Eclips开发Mybatis入门程序
  9. 在Win7设置网络负载均衡,增加带宽
  10. HBuilderX下载安装以及打包uniapp项目