话说发生在房间里的事:猫哭老鼠跑人醒

面向对象,低耦合,搞扩展。

之前看到了一篇关于猫哭老鼠跑人醒的趣闻,今天也随便写了下。。委托事件的设计 代替的动作的听觉接收,编程是一种思想、一则故事、乃至一则笑话。呵呵,谁说不是呢。

 

首先:

在同一个房间里,半夜三更猫哭了。

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);
        }
    }

人也惊醒了。。

posted @ 2012-11-23 19:10  河边一只蛙,呱呱呱  阅读(270)  评论(0编辑  收藏  举报