Java猫叫老鼠跑人惊醒_用代码表示如下情景:猫叫、老鼠逃跑、主人惊醒
### 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猫叫老鼠跑人惊醒_用代码表示如下情景:猫叫、老鼠逃跑、主人惊醒相关推荐
- Java猫叫老鼠跑人惊醒_面试题:猫叫、老鼠跑、人醒的一点看法
这些天一直在面试中,做着不同的面试题,唉,悲催 上周做的一道面试题今天正好出现在园里的首页,看了一下这位同学的实现,基本上方向是对的,就是代码上细节没有注意,有一些错误,这里我就写一下我的理解 --- ...
- 转-观察模式 猫叫鼠跑人醒
转-观察模式 猫叫鼠跑人醒 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. public interface Observer { void Response(); // ...
- Java猫叫老鼠跑人惊醒_关于猫叫、老鼠逃跑、人被惊醒的程序设计
题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒. 要求: 1.要有联动性,老鼠和人的行为是被动的 2.考虑可扩展行,猫叫声可能会引起其他联动效应 看到这个程序设计题目,我的第一反应是用事件 ...
- 事件模拟场景:猫叫-老鼠逃跑 主人惊醒
这是一个典型的观察者模式的应用场景,事件的发源在于猫叫这个动作,在猫叫之后,老鼠开始逃跑,而主人则会从睡梦中惊醒.可以发现,主人和老鼠这两个类型的动作相互之间没有联系,但都是由猫叫这一事件触发的. 设 ...
- java图片识别人像计算人头数_人头检测代码示例:SVM+HOG
人头检测代码示例:SVM+HOG 来源:互联网 作者:佚名 时间:2015-03-17 09:17 网上关于HOG的理解以及结合SVM做检测的源码很多,这里我结合自己的理解对他们做一个综述和总结. 最 ...
- 观察者模式和委托实现 - 老鼠跑,猫叫,人醒
老鼠跑,猫叫,人醒是典型的事件联动,解决此种情形,可以利用观察者模式或者事件委托来实现.利用设计模式时要考虑耦合,但利用事件委托的话,就不需要了.因为用委托的话,理解比较容易,这里没有单写,而是将委托 ...
- 猫叫人醒老鼠跑 C#的委托及事件
昨天进行了一下培训,讲解了一下委托跟事件的应用,说实话这个东西听起来还是一头雾水,虽然学会怎么用,但是还没搞明白需要在什么时候用到这个,后来我们经理给我举了个例子,让我做一个经典的委托和事件的例子,就 ...
- 一道事件委托面试题 - 猫叫老鼠跑主人醒
/* 道事件委托面试题 - 猫叫老鼠跑主人醒 */using System;namespace CatCry {class MainClass{static void Main(string[] ar ...
- 天天酷跑php源码_使用Java实现天天酷跑(附源码)
首先,写一个需求文档: 一.项目名称:<天天酷跑>(RunDay) 二.功能介绍: 闯关类游戏,玩家登录后,选择进入游戏,通过键盘控制玩家的上下左右移动,来躲避 障碍物和吃金币,玩家躲避的 ...
最新文章
- 1m网速是什么意思,1m带宽是什么意思
- 初学者易上手的SSH-hibernate04 一对一 一对多 多对多
- EMNLP 2019 | 大规模利用单语数据提升神经机器翻译
- 【javascript】—— JS判断浏览器类型、操作系统
- 19、SQL Server 数据修改之Insert into
- Go语言在Linux环境下输出彩色字符
- 一个Java多线程练习的调试
- [蓝桥杯][2014年第五届真题]排列序数(思维)
- 图像傅立叶变换的原理和物理意义
- oracle异常:主动抛出自定义异常+捕获指定异常
- 在Launcher3的小部件中隐藏Widgets或Shortcuts
- allure-report详细使用教程
- opencv--轮廓拟合函数 boundingRect(),minAreaRect(),minEnclosingCircle(),fitEllipse(),fitLine()
- 酒馆指南:小白开店必备
- JavaScript的callee 属性
- LCP 2.分式简化
- Springboot2.0集成阿里云RocketMQ
- 解决div比里面包含的img图片高度大的问题
- 凯云水利水电工程造价系统 (四) 配合比单价模块
- 腾讯QQ2009常用功能和设置手册