委托、事件
昨天晚上,坐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(); } } }