LUKIYA'S NEVERLAND

春去秋来,花谢花开。


昨天晚上,坐198到鼓楼,准备转195,手机想起,被老万和向锋半路截下,开车到家乐福买日用品。

这一买就是一个半小时,腿都酸了。买了好多东西,我买了两只猪。

出门下雨了,还好有车,一行四人杀回新家,向锋他朋友开,晕菜,这小子开车真野。

今天又长见识了,经典的一道设计模式题。

“猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒,用C#实现。”

 

using System;
namespace ConsoleApplication1
{
public delegate void MeowHandler(object sender,System.EventArgs e);
public class 猫
{
public event MeowHandler Meow;
public 猫()
{
Console.WriteLine("生成猫");
}
public void 叫()
{
Console.WriteLine("meow ,meow..");
System.Threading.Thread.Sleep(500);
System.EventArgs e = new EventArgs();
OnMeow(e);
}

protected virtual void OnMeow(EventArgs e)
{
if(Meow != null)
{
Meow(this,e);
}
}
}

public class 老鼠
{
public 老鼠()
{
Console.WriteLine("生成老鼠");
}
public void 逃了(object sender,EventArgs e)
{
Console.WriteLine("老鼠猫叫了");
Console.WriteLine("逃了");
}
}
public class 人
{
public 人()
{
Console.WriteLine("生成人");
}

public void 醒了(object sender,EventArgs e)
{
Console.WriteLine("人听到猫叫了");
Console.WriteLine("眨眼,醒了");
}
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Console.WriteLine("开始了.");
// 生成小王
猫 w = new 猫();
// 生成小账
老鼠 z = new 老鼠();
人 y = new 人();
// 指定监视
w.Meow  = new MeowHandler(z.逃了);
w.Meow  = new MeowHandler(y.醒了);
// 开始玩游戏
w.叫();
Console.WriteLine("结束");
Console.ReadLine();
}
}
}