`
xiaoqulai
  • 浏览: 75823 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
最近访客 更多访客>>
han
文章分类
社区版块
存档分类
最新评论

我理解的JAVA观察者模式

阅读更多
观察者模式可以参考邮件订阅的例子
邮件订阅设计到2个主要角色,一个是订阅者(观察者),一个是发布者

发布者可以拥有一个观察者的集合,可以添加,删除观察者,当发布者发布一个新的消息时,要邮件通知观察者集合中的每一个。
所以,发布者实现的接口至少应具备三个方法,即注册观察者,注销观察者,通知观察者。

通知有两种方式,一种是推(push),一种是拉(pull).
推,即发布者通过调用观察者提供的接口,来通知观察者一些变动(比如新增一个消息)。
拉,即观察者可以自主提取所要接受的数据,而不是全盘接受,主要体现在观察者程序自己主动调用观察者的传值接口,而区别于推由发布者来调用,此时,需要这个接口中的参数包含发布者对象,让程序知道扫描变动来自于哪个发布者。

JDK中内置了观察者模式,位于java.util包中,一个接口Observer,一个类Observable,将这两个类组合起来使用,既可以推,又可以拉。
一个普通的类,如果继承了Observable,就成了一个发布者,实现了Observer接口,就成了观察者。
JDK中的观察者模式有一个弊端,就是发布者需要继承一个类,而不是实现一个接口,如果需要成为发布者的类已经集成了一个类,就不能再继承Observable了。这时候,就需要自己来设计一种观察者模式了。

JDK 中Swing包中,大量运用了观察者模式,所有的组件都继承了JComponent,这就是一个发布者,它里面包含一个监听器的集合:EventListenerList,用户可以自定义一个监听器,然后添加到一个组件中的时候,该组件就会把这个监听器注册到 EventListenerList中,相当于添加了一个发布者,当用户对组件做出反应(如单击)时,相关的监听器(接受者)都会收到信息并作出反应。
分享到:
评论
6 楼 lanhongbo 2010-03-18  
最近在看JS 谁能说下观察者模式在JS上如何场景下应用 怎么来设计
5 楼 xiaoqulai 2010-03-18  
Server 相当于发布者, Client相当于观察者
拿B/S架构而言, Server 就是 Web应用, 保存了所有的Client(浏览器)的session。
如果需要重启服务器,就可以发布一条重启服务器的消息给client.

发消息有2中方法,推和拉,推即采取长连接的方法保持与client的通信,拉则是在客户端启动一个脚本定时器,每隔几秒主动去服务器拉数据,拉到从其服务器重启的消息,就可以通知用户了。
4 楼 ckn126 2010-03-18  
解释的非常透彻,但是我想问一下 在server 中是如何使用这个观察者模式呢,怎么样才能使用。。。
3 楼 bradwoo8621 2010-03-12  
event listener在开发中很实用 ,可惜很多TX都之知道在UI中使用, 不会活用到Server当中去, 遗憾啊。。。
2 楼 banfry 2010-03-11  
讲得很好,lz能不能写段关于‘拉’的代码!!
1 楼 putonyuer 2009-08-05  
还不错 讲的很透彻 一直想找资料看看

观察着模式在j2ee电子商务网站也能用到

相关推荐

    java观察者模式观察者模式

    观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象...在实际开发中,理解并合理运用观察者模式,能够有效地实现对象之间的交互和通信,提升代码的灵活性和可维护性。

    java观察者模式Demo

    观察者模式是软件设计模式中的一种行为...总的来说,"java观察者模式Demo"提供了一个使用Java标准库实现观察者模式的例子,这对于学习和理解设计模式是非常有帮助的,同时通过自定义实现还能进一步深入理解其工作原理。

    Java内置观察者模式

    本文将深入探讨Java内置的观察者模式,包括其原理、实现方式以及实际应用。 ### 观察者模式的核心概念 1. **主题(Subject)**:被观察的对象,也就是发出通知的一方。在Java中,通常通过实现`java.util....

    Java观察者模式代码全解析

    Java观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在软件工程中广泛应用,尤其在事件驱动和发布/订阅系统中。...

    java 观察者模式 demo

    以下是一个简单的Java观察者模式的示例: ```java import java.util.Observable; import java.util.Observer; class WeatherData implements Observable { private float temperature; private float humidity; ...

    java 设计模式 观察者模式 简单实例 包括测试test类

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,...在实际的Java开发中,理解并熟练运用观察者模式对于编写高质量的代码至关重要。

    java观察者模式实例

    总结来说,这个"java观察者模式实例"帮助我们理解如何在实际项目中应用观察者模式,以及如何利用Java的`Observable`和`Observer`接口来实现。通过这个实例,我们可以更好地掌握Java的继承和多态特性,提升软件设计的...

    java设计模式之观察者模式

    在Java中,观察者模式通常通过`java.util.Observable`和`java.util.Observer`这两个接口来实现。`Observable`类代表被观察的对象,它可以添加多个观察者,并在状态变化时通知它们。而`Observer`接口则定义了观察者的...

    运用MVC模式及观察者模式的java小程序

    在Java编程领域,设计模式是解决常见问题的模板或最佳实践。在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的...分析和学习这些代码将有助于深入理解MVC和观察者模式的实际应用。

    Java观察者模式代码

    在Java中,观察者模式的实现主要依赖于`java.util.Observable`类和`java.util.Observer`接口。`Observable`类代表被观察的对象,而`Observer`接口则表示观察者。下面我们将详细介绍如何在Java中实现观察者模式。 1....

    java 了解观察者模式

    观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计模式中的行为模式之一,主要用于对象间的一...理解并熟练运用观察者模式,可以提升代码的可维护性和复用性,使得程序设计更加符合面向对象的原则。

    java 观察者模式经典案例

    设计模式是软件工程中的重要组成部分,理解并熟练运用观察者模式可以帮助我们编写出更加高效、易于维护的代码。在Java Web开发中,例如JSP(Java Server Pages)环境中,观察者模式常用于页面与模型之间的交互,使得...

    java观察者模式

    Java观察者模式是一种行为设计模式,它允许一个对象(称为观察者)在其他对象(称为主题)的状态发生改变时接收通知。在Java中,观察者模式是通过`java.util.Observer`和`java.util.Observable`接口实现的。这个模式...

    java观察者模式demo----未使用java工具类

    在Java中,标准的观察者模式实现是通过`java.util.Observable`类和`java.util.Observer`接口来完成的,但本示例特别指出未使用这两个内置工具类,而是完全自定义实现了观察者模式。 观察者模式的主要组件包括: 1. ...

    java实现观察者模式

    在Java中,观察者模式可以通过Java的内置API `java.util.Observable` 和 `java.util.Observer` 类来实现。`Observable` 类代表被观察的对象,而 `Observer` 接口则表示观察者。以下是对这两个关键类的详细解释: 1....

    java内置的观察者模式demo

    首先,我们要理解观察者模式的基本概念。在观察者模式中,被观察者是主题,它可以被许多观察者订阅。当被观察者的状态发生变化时,会自动调用所有已注册观察者的更新方法,传递变化的信息。这种模式可以实现松耦合,...

    java 观察者模式 (Observe)

    ### Java观察者模式详解 #### 引言:深入探索观察者模式 观察者模式(Observer)是设计模式中的一种常用模式,它定义了一种一对多的依赖关系,使得多个观察者对象可以同时监听某一主题对象。当主题对象的状态发生...

    观察者模式代码(JAVA)

    观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于...通过理解和正确应用观察者模式,开发者可以创建出更加灵活、响应式的设计。

    设计模式实现——观察者模式

    4. **Java实现**:在Java中,`java.util.Observable`类和`java.util.Observer`接口提供了观察者模式的标准实现。`Observable`类代表主题,`Observer`接口代表观察者。通过`addObserver()`添加观察者,`...

    java设计模式系列之观察者模式代码

    通过学习和实践观察者模式,开发者能够更好地理解如何在对象之间建立松耦合的关系,使代码更易于维护和扩展。同时,它也是实现反应式编程的基础,有助于构建更灵活、响应更快的系统。在Java中,`java.util....

Global site tag (gtag.js) - Google Analytics