观察者模式:猫叫鼠跑人醒(C#)
本着菜鸟先飞的想法,决定把平时遇到的知识点记录下来,一来是加深理解,二来是方便以后自己查阅。当您看到我这篇文章的时候,觉得代码有哪里不足的地方,请多指教,谢谢。(命名不规范是为了加深自己的理解,多多见谅。)
观察者模式:即当目标对象状态或者是行为发生改变时,正在观察该目标对象的观察者们做出一系列自动反应。
.接口实现
public interface Oberver
{
void 坐出反应();
}
public interface BObserver
{
void 反应(Oberver o);
}
public class 老鼠 : Oberver
{
public 老鼠(BObserver b)
{
b.反应(this);
}
public void 坐出反应()
{
Console.WriteLine("老鼠跑了...");
}
}
public class 人 : Oberver
{
public 人(BObserver b)
{
b.反应(this);
}
public void 坐出反应()
{
Console.WriteLine("人醒了...");
}
}
public class 猫 : BObserver
{
List<Oberver> list;
public 猫()
{
list = new List<Oberver>();
}
public void 反应(Oberver o)
{
list.Add(o);
}
public void 猫叫()
{
foreach (Oberver o in list)
{
o.坐出反应();
}
}
.委托和事件
public delegate void 处理();
public abstract class 被观察
{
public event 处理 处理事件;
public void Test()
{
if (处理事件 != null) this.处理事件();
}
}
public class 猫 : 被观察
{
public void 猫叫()
{
Console.WriteLine("猫叫了!");
this.Test();
}
}
public abstract class 观察者2
{
public 观察者2(被观察 b)
{
b.处理事件 += new 处理(观察做出反应);
}
public abstract void 观察做出反应();
}
public class 老鼠 : 观察者2
{
public 老鼠(被观察 b) : base(b) { }
public override void 观察做出反应()
{
Console.WriteLine("老鼠跑了......");
}
}
public class 人 : 观察者2
{
public 人(被观察 b) : base(b) { }
public override void 观察做出反应()
{
Console.WriteLine("人醒了......");
}
}
第一次发帖感觉好乱,多多包含。—菜鸟先飞
观察者模式:猫叫鼠跑人醒(C#)的更多相关文章
- 面试习题之设计模式 C#观察者模式(猫叫老鼠惊走主人醒)
腾讯云测试|TEST Tencent Cloud /* * CatShout.cs */ using System; using System.IO; using System.Collections ...
- .NET委托和事件
.net学习之委托和事件 1.什么是委托 通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器 上传图片: 2.委托语法 准备一个方法:string Hello(string ...
- .net学习之委托和事件
1.什么是委托通俗的说:委托就是一个能够存储符合某种格式(方法签名)的方法的指针的容器上传图片: 2.委托语法准备一个方法:string Hello(string userName){} string ...
- C#事件委托概念
事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托. 通俗的讲,委托你可以在客户代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发 也就是说在你的代 ...
- Yii2之事件处理
通过事件(Event)处理,可以在某个特定时刻执行指定的代码,可以解耦代码,同时也增加了可维护性,通常,事件在客户端软件中比较好理解,比如onClick,onFocus,当点击按钮,获取到焦点时执行指 ...
- 老鼠跑猫叫主人惊醒c++观察者模式实现
这个题目算是比较经典的观察者模式了,老鼠作为一个Subject,主动发出跑的动作,紧跟着猫由于老鼠的跑而发出叫声,主人也被惊醒,在这里猫跟主人都是被动的,是观察者角色,代码实现如下: class CS ...
- 09观察者模式ObServer
一.什么是观察者模式 Observer模式是行为模式之一,它的作用是当 一个对象的状态发生变化时,能够自动通知其他 关联对象,自动刷新对象状态. Observer模式提供给关联对象一种同步通信的 手段 ...
- Chinese culture
文房四宝 笔墨纸砚是中国古代文人书房中必备的宝贝,被称为“文房四宝”.用笔墨书写绘画在 中国可追溯到五千年前.秦(前221---前206)时已用不同硬度的毛和竹管制笔:汉代(前206—公元220) ...
- 关于一个简单面试题(。net)
猫大叫一声,主人被惊醒,所有的小老鼠开始逃窜. 期初想到的是事件调用方法. 在猫叫的事件中调用一对方法就可以了. 但是,当事件很多的时候 难保大家写着写着就忘记了. 总不能有 10000个人的时候调用 ...
随机推荐
- CSS的base文件常用代码
article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}body,but ...
- Email Cover Letter Format
http://jobsearch.about.com/od/sampleletters/ig/Sample-Letter-Formats/Email-Message-Format.htm Copy ...
- Median of Two Sorted Arrays(Java)
求2个数组的中位数 方法很多 但是时间复杂度各异 1利用数组copy方法先融合两个数组,然后排序,找出中位数 import java.lang.reflect.Array; import java.u ...
- 在windows中使用VMWare安装Mac OS 10.7
请参考http://www.cnblogs.com/huwlnew/archive/2011/11/15/2250342.html http://unmi.cc/vmware9-install-mac ...
- 自写AES加密解密工具类
此类主要用于加密与解密,采用128位ECB模式,PKCS5Padding填充补位. 可使用方法为加密返回二进制encryptBin(content, key).加密返回十六进制encryptHex(c ...
- rotate.js实现图片旋转 (chrome,IE,firefox都可以实现)
找了好多资料,要么是IE可以用,但是谷歌不行,,还有就是两个都可以用的,图片大小显示不全.终于找到一个好一点的js,先贴一下代码. 1.rotate.js jQuery.fn.rotate = fun ...
- js 打开新页面 window.open()
利用js打开一个新页面,而不是一个新窗口. 在网上各种东西啊,蛋疼了半天,还白疼了.. 后来看到a标签有target属性,然后又发现window.open()的第二个参数是target,然后我笑了(e ...
- socket简单通信
粗糙简略的初版,后续多加点功能权当练手 /* ============================================================================ ...
- HDU 2553 N皇后问题(dfs)
N皇后问题 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description 在 ...
- TCP协议: SYN ACK FIN RST PSH URG 详解
TCP的三次握手是怎么进行的了:发送端发送一个SYN=1,ACK=0标志的数据包给接收端,请求进行连接,这是第一次握手:接收端收到请求并且允许连接的话,就会发送一个SYN=1,ACK=1标志的数据包给 ...