话说发生在房间里的事:猫哭老鼠跑人醒
面向对象,低耦合,搞扩展。
之前看到了一篇关于猫哭老鼠跑人醒的趣闻,今天也随便写了下。。委托事件的设计 代替的动作的听觉接收,编程是一种思想、一则故事、乃至一则笑话。呵呵,谁说不是呢。
首先:
在同一个房间里,半夜三更猫哭了。
public static void Main(string[] args) { RoomThing room = new RoomThing()._(); new Cat().Cry(room); System.Console.ReadKey(); } public static void EvenFn(string ms) { Console.WriteLine(ms); }
接着:
房间里的事,获取了事件的产生,发出了信息。
/// <summary> /// 房间里的事 /// </summary> public class RoomThing { public event EvenHandleDel Fn; private RoomThing _RoomThing {get;set;} public RoomThing(){} public RoomThing(RoomThing room) { _RoomThing = room; } public RoomThing _() { if (roomThing == null) { roomThing = this; return roomThing; } else return roomThing; } public RoomThing roomThing { get { if (_RoomThing == null) { Console.WriteLine("三更半夜房间里发生了..."); _RoomThing = this; return _RoomThing; } else return _RoomThing; } set { _RoomThing = value; } } public void DoAction(string action) { if (Fn != null) Fn(action); } }
然后:
老鼠灵敏的听觉总是瞒不住的。。
public delegate void EvenHandleDel(string action);
最后:
老鼠开始跑了。。
/// <summary> /// 对象:老鼠 /// </summary> public class Mouse { private static string RunStr = "跑"; public void Run(RoomThing room) { room.Fn += ShowAction; room.DoAction(RunStr); room.Fn -= ShowAction; new People().Wake(room); } private static void ShowAction(string action) { Console.WriteLine("老鼠" + action); } } /// <summary> /// 对象:猫 /// </summary> public class Cat { private string CryStr = "哭了"; public void Cry(RoomThing room) { room.Fn += ShowAction; room.DoAction(CryStr); room.Fn -= ShowAction; new Mouse().Run(room); } private static void ShowAction(string action) { Console.WriteLine("猫" + action); } } /// <summary> /// 对象:人 /// </summary> public class People { private static string WakeStr = "醒了"; public void Wake(RoomThing room) { room.Fn += ShowAction; room.DoAction(WakeStr); room.Fn -= ShowAction; } private static void ShowAction(string action) { Console.WriteLine("人" + action); } }
人也惊醒了。。