观察者设计模式(C#委托和事件的使用)

 转载

转载

转载

static void Main(string[] args)
        {
           
            Mouse mouse = new Mouse("米奇", "黄色");
            Cat cat = new Cat("米奇", "黄色", mouse);
            cat.CatCome();
            Console.ReadKey();
        }
//被观察者
    class Cat
    {
        private String _name;
        private string _color;

        delegate void MyDelegate();//自定义一个委托类型,该委托可以包装一个没有返回值和参数的方法
        private event MyDelegate CatComeEventHandler;//利用委托声明定义一个事件。但是委托和事件并没有本质区别,只是事件不可以在定义它的类外部
       //被访问。事件,具有特殊签名的委托。
        public Cat(string name, string color, Mouse mouse)
        {
            this._name = name;
            this._color = color;
            this.CatComeEventHandler += mouse.MouseRun;//注册事件,将事件指向mouse.MouseRun方法
        }

        public void CatCome()
        {
            Console.WriteLine("名字为:" + _name + "的小猫叫了一声");
            CatComeEventHandler();//利用事件调用被注册的方法。CatCome事件发生,被注册的事件也发生。这就是观察者模式。
        }
    }
//观察者
    class Mouse
    {
        private String _name;
        private String _color;
        public Mouse(string name, string color)
        {
            _name = name;
            _color = color;
        }
        public void MouseRun()
        {
            Console.WriteLine("名字为:" + _name + "的老鼠开始逃跑了");
        }
    }

猜你喜欢

转载自www.cnblogs.com/macT/p/11783057.html