观察者模式[Observer]

it2022-05-05  139

所谓观察者模式

在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖于他的对象都收到通知,并自动更新 

其实很好理解

就是观察者 观察 被观察的人。。

 打个比方,读者找出版社订阅书籍,双方的约定是,一旦这个出版社出版了书籍,那么这个读者就可以收到书

当然,他也可以退订

 

这样说,是不是很容易想到了委托,事件?

很可惜,head first 设计模式关于这个模式的讲解后半段是Java的(其实全部是Java的,只是后半段在.net环境下无法编写了)

     // 这个例子并不具有准确性,因为是我自己写的- -!,但是应该能说明问题了     // 这是一个猫和老鼠的故事      public   delegate   void  Mydelegate();     // 定义被观察者(事件发起者)      public   abstract   class  subject    {         public   event  Mydelegate Myevent;         protected   virtual   void  OnPublish()        {             if  (Myevent  !=   null )                Myevent();        }         public   abstract   void  publish();    }     // 定义观察者(事件接收)      public   abstract   class  observer    {         // 注册事件          public  observer(subject s)        {            s.Myevent  +=  dosomething;        }         public   abstract   void  dosomething();    }     // 一只猫      public   class  cat : subject    {         public   override   void  publish()        {            Console.WriteLine( " miao~~miao~~ " );             base .OnPublish();        }    }     // 一只老鼠      public   class  mouse : observer    {         // 当实例化一只老鼠时,就已经向猫订阅了信息,以便日后逃跑          public  mouse(subject s)            :  base (s)        { }         public   override   void  dosomething()        {            Console.WriteLine( " mouse escape away " );        }    }     class  Program    {         static   void  Main( string [] args)        {            cat c  =   new  cat();            mouse m  =   new  mouse(c);             // 猫一叫,老鼠跑了             c.publish();            Console.Read();        }    }

 

 

 

转载于:https://www.cnblogs.com/renjuwht/archive/2010/01/18/1650255.html


最新回复(0)