observer pattern

原创 2013年12月01日 21:41:35

defines a one-to-many dependency between objects so that when one object changes state, all of its dependents are notified and updated automatically.








subject内部有个observer的集合,subject内部状态发生变化,就调用observer的update接口,通知所有的observer。




observer内部有个subject的成员变量,用以注册和取消注册

优缺点:

观察者模式的效果有以下几个优点:

    1观察者模式在被观察者和观察者之间建立一个抽象的耦合。被观察者角色所知道的只是一个具体现察者聚集,每一个具体现察者都符合一个抽象观察者的接口。被观察者并不认识任何一个具体观察者,它只知道它们都有一个共同的接口。由于被观察者和观察者没有紧密地耦合在一起,因此它们可以属于不同的抽象化层次。

    2观察者模式支持广播通信。被观察者会向所有的登记过的观察者发出通知。

观察者模式有下面的一些缺点:

    1如果一个被观察者对象有很多直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。

    2如果在被观察者之间有循环依赖的话,被观察者会触发它们之间进行循环调用,导致系统崩溃。在使用观察考模式时要特别注意这一点。

    3如果对观察者的通知是通过另外的线程进行异步投递的话,系统必须保证投递是以自恰的方式进行的。

    4虽然观察者模式可以随时使观察者知道所观察的对象发生了变化,但是观察者模式没有相应的机制使观察者知道所观察的对象是怎么发生变化的。



相关文章推荐

Observer HeadFirst design pattern

  • 2010年11月01日 20:30
  • 3KB
  • 下载

Net设计模式实例之观察者模式(Observer Pattern)

一、观察者模式简介(Brief Introduction) 观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化的时,会通知所有观察者对象,使他们...
  • my98800
  • my98800
  • 2017年01月15日 10:46
  • 108

我所理解的设计模式(C++实现)——观察者模式(Observer Pattern)

概述:         最近中国股市起起伏伏,当然了起伏就用商机,小明发现商机后果断想入市,买入了中国证券,他想在电脑客户端上,网页上,手机上,iPad上都可以查看到该证券的实时行情,这种情况下我们...
  • LCL_data
  • LCL_data
  • 2013年06月30日 18:19
  • 28136

设计模式---观察者模式(Observer Pattern with java)

概述 观察者模式(有时又被称为发布/订阅模式)是软体设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来...

观察者模式(Observer Pattern)(三):使用java内置的支持实现HeadFirst气象站

一、问题描述 Weather-O-Rama气象站计划建立下一代的Internet气象观察站,该气象站必须建立在WeatherData对象的基础上,WeatherData对象提供天气数据,有三...

设计模式学习--观察者模式(Observer Pattern)

设计模式学习--观察者模式(Oberser Pattern) 2013年5月18日 天气:热!  下午15:28  设计模式学习中 学习者:小巫 什么是观察者模式? ...
  • wwj_748
  • wwj_748
  • 2013年05月18日 16:40
  • 3431

观察者模式(Observer pattern)

观察者模式(Observer patten),定义了对象之间的一对多依赖,这样一来一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。       它在现实生活中也非常常见,如报纸、杂志的订阅...

观察者模式(Observer Pattern)升级版

简介前面的博客https://goo.gl/DFOz50中已经介绍过基本的观察者模式的代码实现,在实际应用中,我们往往希望代码更加简洁,同时也希望能与现有的框架,比如Spring,结合起来。下面介绍如...

设计模式之--观察者模式(Observer Pattern)(22)

定义:观察者模式,也叫发布订阅模式。             定义对象间一种一对多的依赖关系,使得每 当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。 Sbuject被观察者职责...

观察者模式(Observer Pattern) .NET设计模式

概述   在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系” ——一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)都将得到通知。如果这样的依赖关系过于紧密,将使软件不能很好...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:observer pattern
举报原因:
原因补充:

(最多只允许输入30个字)