观察者设计模式中存在两种角色: 观察者被观察者

  最经典的例子就是“猫叫了,老鼠跑了,惊醒了主人。”,这个例子也是我以前去微软面试的时候碰到的一个面试题,当时就是让我设计一下这个过程的实现框架。

  在这个例子中,老鼠和主人其实就是观察者,而猫属于被观察者,老鼠和主人观察猫的变化,猫有了动作,老鼠和主人就要做出响应。被观察者,就是这个过程,也可以叫做整个事件的根本原因,亦可以叫直接导火索。 

  从上面这个例子不难看出,观察者和被观察者的关系通常是n:1,也就是多个多个观察者观察一个被观察者。 

  这样就给我们一个小小的提示,通过这个提示就可以很容易的找出被观察者。猫,也就是观察的内容,或者观察的被动者,猫所在的角色就是被观察者;老鼠和主人,也就是观察的主体,动作的出发者,他们的角色就是观察者。

  当然了,实际的项目中,这个过程肯定没有这么简单,这时候需要我们把大过程,分解成很多的小过程,分层级的找出观察者和被观察者,分层级的使用观察者模式。

  下面给出我写的一个完整代码,欢迎大家一起讨论。

      完整代码:/Files/virusswb/BeautyCode.DesignPattern.Observer.rar

  代码包括两个部分,首先是普通的观察者模式,也就是在被观察者中注册观察者,多个观察者通过一个荣起来管理,然后向观察者发送通知。

   


    }
  
}

 

  第二种是在.NET 框架的基础之上的观察者,也就是事件委托类型的观察者,不需要在被观察者中注册观察者,降低了观察者和被观察者的耦合度。

 

, e.Message));
        }
    }
}

 

 

  下面是他们的调用代码,是一个Console应用程序

 

 state;
        }
    }
}

 

 

相关文章:

  • 2021-09-30
  • 2021-08-05
  • 2018-09-13
  • 2021-10-10
  • 2021-11-07
  • 2021-10-16
  • 2021-05-17
猜你喜欢
  • 2021-05-20
  • 2022-12-23
  • 2021-10-16
  • 2022-02-04
  • 2021-11-28
  • 2021-09-13
相关资源
相似解决方案