观察者设计模式定义了对象间的一种一对多的依赖关系,以便一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动刷新。在现实生活中的可见观察者模式,例如,微信中的订阅号,订阅博客和QQ微博中关注好友,这些都属于观察者模式的应用。

 

实现:比如热水器在烧水的过程中,当水温即将烧开时,会发出报警的声音,显示器上会出现温度监控

转载

转载

转载

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 + "的老鼠开始逃跑了");
        }
    }

 

posted on 2019-11-02 16:56  红磨坊后的白桦树  阅读(184)  评论(0编辑  收藏  举报