`

设计模式 - Observer

阅读更多

现在上班真的很麻烦,天天早上做公交车上班,人非常的多,都上不了车,等上车后,每到站,列车员就报站,然后乘客就有不同的动作,有人急忙下车,有人继续悠闲的看着报纸。这里体现了一个显示的观察者模式,列车员,乘客分别代表了二种不同的。

GOF定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时, 所有依赖于它的对象都得到通知并被自动更新

角色描述:

Subject:抽象的目标角色

Observer:抽象的观察者角色

ConcreteSubject:具体的目标角色

ConcreteObserver:具体的观察者角色

实用性

  • 当一个抽象模型有两个方面, 其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。
  • 当对一个对象的改变需要同时改变其它对象, 而不知道具体有多少对象有待改变。
  • 当一个对象必须通知其它对象,而它又不能假定其它对象是谁。换言之, 你不希望这些对象是紧密耦合的。
  • 分享到:
    评论
    2 楼 netliving 2008-03-07  
    可以通过抽象目标在接受到事件以后扫描所有观察者实现的方式来完成,制定好过滤器就可以了。
    1 楼 jomper 2008-03-07  
    我关心的是,如何在无入侵的情况下,实现任意对象observable。

    相关推荐

    Global site tag (gtag.js) - Google Analytics