zoukankan
html css js c++ java
猫叫了,所有老鼠开始逃跑经典面试题
Code
1
/**/
/*
2
* 题目:
3
* 猫叫了,所有老鼠开始逃跑,主人被惊醒,请用OO的思想描绘此过程
4
* 1,老鼠跟主人是被动的
5
* 2,要考虑联动性与扩展性
6
*/
7
using
System;
8
using
System.Collections.Generic;
9
using
System.Text;
10
11
namespace
CatCry
{
12
13
/**/
/*
委托,当猫叫时将信息传给所有观察者
*/
14
public
delegate
void
CatCryEventHandler(
object
sender, EventArgs e);
15
16
/**/
/*
被观察对象
*/
17
abstract
class
Subject
{
18
public
event
CatCryEventHandler CatCryEvent;
//
猫叫时的事件
19
public
void
Cry(EventArgs e)
{
20
this
.CatCryEvent(
this
, e);
21
}
22
public
void
Cry()
{
23
//
不接收猫叫时发出的信息
24
this
.CatCryEvent(
this
,
new
EventArgs());
25
}
26
}
27
28
/**/
/*
观察者
*/
29
abstract
class
Observer
{
30
public
Observer()
{ }
31
public
Observer(Subject subject)
{
32
subject.CatCryEvent
+=
new
CatCryEventHandler(
this
.Notified);
33
}
34
//
当猫叫时做出的反应(当收到通知时)
35
abstract
protected
void
Notified(
object
sender, EventArgs e);
36
}
37
38
/**/
/*
定义猫作为被观察对象
*/
39
class
Cat : Subject
{
40
public
Cat()
{ Console.WriteLine(
"
猫叫了
"
); }
41
}
42
43
/**/
/*
定义老鼠作为观察者
*/
44
class
Mouse : Observer
{
45
string
mouseName;
46
public
Mouse()
{ }
47
public
Mouse(
string
mouseName, Subject subject)
48
:
base
(subject)
{
49
this
.mouseName
=
mouseName;
50
}
51
override
protected
void
Notified(
object
sender, EventArgs e)
{
52
Console.WriteLine(
this
.mouseName
+
"
开始逃跑
"
);
53
}
54
}
55
56
/**/
/*
定义主人作为观察者
*/
57
class
Marster : Observer
{
58
public
Marster()
{ }
59
public
Marster(Subject subject) :
base
(subject)
{ }
60
override
protected
void
Notified(
object
sender, EventArgs e)
{
61
Console.WriteLine(
"
主人被惊醒了
"
);
62
}
63
}
64
65
/**/
///
<summary>
66
///
功能:用观察者模式实现
67
///
作者:allnen
68
///
时间:2008-6-5
69
///
</summary>
70
class
Program
{
71
static
void
Main(
string
[] args)
{
72
Cat cat
=
new
Cat();
73
Mouse m1
=
new
Mouse(
"
老鼠1
"
, cat);
74
Mouse m2
=
new
Mouse(
"
老鼠2
"
, cat);
75
76
Marster marster
=
new
Marster(cat);
77
cat.Cry();
//
猫叫了
78
79
}
80
}
81
}
82
查看全文
相关阅读:
[LeetCode] Most Profit Assigning Work 安排最大利润的工作
[LeetCode] Friends Of Appropriate Ages 适合年龄段的朋友
[LeetCode] Goat Latin 山羊拉丁文
[LeetCode] Binary Trees With Factors 带因子的二叉树
[LeetCode] Card Flipping Game 翻卡片游戏
[AWS] Nginx Started but not Serving AWS上Nginx服务器无法正常工作
[LeetCode] Shortest Distance to a Character 到字符的最短距离
[LeetCode] Short Encoding of Words 单词集的短编码
[LeetCode] Most Common Word 最常见的单词
Solve Error: MissingSchemaError: Schema hasn't been registered for model "YourModel".
原文地址:https://www.cnblogs.com/seerlin/p/1285812.html
最新文章
干货满满!10分钟看懂Docker和K8S
k8s与Docker有啥关系
canal-client和canal-server
SAFe相关
Spring IO Platform简介及示例
[LeetCode] 841. Keys and Rooms 钥匙与房间
[LeetCode] Magic Squares In Grid 网格中的神奇正方形
[LeetCode] Push Dominoes 推多米诺骨牌
[LeetCode] 837. New 21 Game 新二十一点游戏
[LeetCode] 836. Rectangle Overlap 矩形重叠
热门文章
[LeetCode] 818. Race Car 赛车
[LeetCode] 835. Image Overlap 图像重叠
[LeetCode] Find And Replace in String 在字符串中查找和替换
[LeetCode] Flipping an Image 翻转图像
[LeetCode] Masking Personal Information 给个人信息打码
[LeetCode] Positions of Large Groups 大群组的位置
[LeetCode] 886. Possible Bipartition 可能的二分图
[LeetCode] 509. Fibonacci Number 斐波那契数字
[LeetCode] 815. Bus Routes 公交线路
[LeetCode] 805. Split Array With Same Average 分割数组成相同平均值的小数组
Copyright © 2011-2022 走看看