观察者模式可以参考邮件订阅的例子
邮件订阅设计到2个主要角色,一个是订阅者(观察者),一个是发布者
发布者可以拥有一个观察者的集合,可以添加,删除观察者,当发布者发布一个新的消息时,要邮件通知观察者集合中的每一个。
所以,发布者实现的接口至少应具备三个方法,即注册观察者,注销观察者,通知观察者。
通知有两种方式,一种是推(push),一种是拉(pull).
推,即发布者通过调用观察者提供的接口,来通知观察者一些变动(比如新增一个消息)。
拉,即观察者可以自主提取所要接受的数据,而不是全盘接受,主要体现在观察者程序自己主动调用观察者的传值接口,而区别于推由发布者来调用,此时,需要这个接口中的参数包含发布者对象,让程序知道扫描变动来自于哪个发布者。
JDK中内置了观察者模式,位于java.util包中,一个接口Observer,一个类Observable,将这两个类组合起来使用,既可以推,又可以拉。
一个普通的类,如果继承了Observable,就成了一个发布者,实现了Observer接口,就成了观察者。
JDK中的观察者模式有一个弊端,就是发布者需要继承一个类,而不是实现一个接口,如果需要成为发布者的类已经集成了一个类,就不能再继承Observable了。这时候,就需要自己来设计一种观察者模式了。
JDK 中Swing包中,大量运用了观察者模式,所有的组件都继承了JComponent,这就是一个发布者,它里面包含一个监听器的集合:EventListenerList,用户可以自定义一个监听器,然后添加到一个组件中的时候,该组件就会把这个监听器注册到 EventListenerList中,相当于添加了一个发布者,当用户对组件做出反应(如单击)时,相关的监听器(接受者)都会收到信息并作出反应。
分享到:
- 2009-08-03 17:42
- 浏览 765
- 评论(6)
- 论坛回复 / 浏览 (6 / 3824)
- 查看更多
相关推荐
观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象...在实际开发中,理解并合理运用观察者模式,能够有效地实现对象之间的交互和通信,提升代码的灵活性和可维护性。
观察者模式是软件设计模式中的一种行为...总的来说,"java观察者模式Demo"提供了一个使用Java标准库实现观察者模式的例子,这对于学习和理解设计模式是非常有帮助的,同时通过自定义实现还能进一步深入理解其工作原理。
本文将深入探讨Java内置的观察者模式,包括其原理、实现方式以及实际应用。 ### 观察者模式的核心概念 1. **主题(Subject)**:被观察的对象,也就是发出通知的一方。在Java中,通常通过实现`java.util....
Java观察者模式是一种设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式在软件工程中广泛应用,尤其在事件驱动和发布/订阅系统中。...
以下是一个简单的Java观察者模式的示例: ```java import java.util.Observable; import java.util.Observer; class WeatherData implements Observable { private float temperature; private float humidity; ...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,...在实际的Java开发中,理解并熟练运用观察者模式对于编写高质量的代码至关重要。
总结来说,这个"java观察者模式实例"帮助我们理解如何在实际项目中应用观察者模式,以及如何利用Java的`Observable`和`Observer`接口来实现。通过这个实例,我们可以更好地掌握Java的继承和多态特性,提升软件设计的...
在Java中,观察者模式通常通过`java.util.Observable`和`java.util.Observer`这两个接口来实现。`Observable`类代表被观察的对象,它可以添加多个观察者,并在状态变化时通知它们。而`Observer`接口则定义了观察者的...
在Java编程领域,设计模式是解决常见问题的模板或最佳实践。在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的...分析和学习这些代码将有助于深入理解MVC和观察者模式的实际应用。
在Java中,观察者模式的实现主要依赖于`java.util.Observable`类和`java.util.Observer`接口。`Observable`类代表被观察的对象,而`Observer`接口则表示观察者。下面我们将详细介绍如何在Java中实现观察者模式。 1....
观察者模式,也被称为发布-订阅(Publish-Subscribe)模式,是软件设计模式中的行为模式之一,主要用于对象间的一...理解并熟练运用观察者模式,可以提升代码的可维护性和复用性,使得程序设计更加符合面向对象的原则。
设计模式是软件工程中的重要组成部分,理解并熟练运用观察者模式可以帮助我们编写出更加高效、易于维护的代码。在Java Web开发中,例如JSP(Java Server Pages)环境中,观察者模式常用于页面与模型之间的交互,使得...
Java观察者模式是一种行为设计模式,它允许一个对象(称为观察者)在其他对象(称为主题)的状态发生改变时接收通知。在Java中,观察者模式是通过`java.util.Observer`和`java.util.Observable`接口实现的。这个模式...
在Java中,标准的观察者模式实现是通过`java.util.Observable`类和`java.util.Observer`接口来完成的,但本示例特别指出未使用这两个内置工具类,而是完全自定义实现了观察者模式。 观察者模式的主要组件包括: 1. ...
在Java中,观察者模式可以通过Java的内置API `java.util.Observable` 和 `java.util.Observer` 类来实现。`Observable` 类代表被观察的对象,而 `Observer` 接口则表示观察者。以下是对这两个关键类的详细解释: 1....
首先,我们要理解观察者模式的基本概念。在观察者模式中,被观察者是主题,它可以被许多观察者订阅。当被观察者的状态发生变化时,会自动调用所有已注册观察者的更新方法,传递变化的信息。这种模式可以实现松耦合,...
### Java观察者模式详解 #### 引言:深入探索观察者模式 观察者模式(Observer)是设计模式中的一种常用模式,它定义了一种一对多的依赖关系,使得多个观察者对象可以同时监听某一主题对象。当主题对象的状态发生...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于...通过理解和正确应用观察者模式,开发者可以创建出更加灵活、响应式的设计。
4. **Java实现**:在Java中,`java.util.Observable`类和`java.util.Observer`接口提供了观察者模式的标准实现。`Observable`类代表主题,`Observer`接口代表观察者。通过`addObserver()`添加观察者,`...
通过学习和实践观察者模式,开发者能够更好地理解如何在对象之间建立松耦合的关系,使代码更易于维护和扩展。同时,它也是实现反应式编程的基础,有助于构建更灵活、响应更快的系统。在Java中,`java.util....