使用Java中自带的Observer模式时,需要用到一下两个类:
需要注意到是,当需要使用Observable中的notifyObservers()方法时,必须在之前调用setChanged()方法才会生效,否则notifyObservers()方法什么都不会发生。
代码如下:
TfObserver.java
import java.util.Observable;
import java.util.Observer;
public class TfObserver implements Observer
{
@Override
public void update(Observable arg0, Object arg1)
{
System.out.println("Tf's Observer has saved " + arg1);
}
}
MhObserver.java
import java.util.Observable;
import java.util.Observer;
public class MhObserver implements Observer
{
@Override
public void update(Observable o, Object arg)
{
System.out.println("Mh's Observer has saved " + arg);
}
}
以上为两个观察者。
Client.java
import java.util.Observable;
public class Client extends Observable
{
public void notifyAll(String s)
{
super.setChanged();
super.notifyObservers(s);
}
}
需注册观察者的Client。
MainClass.java
import java.util.Observer;
public class MainClass
{
public static void main(String[] args)
{
Client o = new Client();
Observer tf = new TfObserver();
Observer mh = new MhObserver();
o.addObserver(tf);
o.addObserver(mh);
// System.out.println(o.countObservers());
// 只有在setChange()被调用后,notifyObservers()才会去调用update(),否则什么都不干。
// System.out.println(o.hasChanged());
o.notifyAll("Lol~");
}
}
分享到:
相关推荐
在Java中,Observer模式主要通过java.util.Observable和java.util.Observer接口来实现。Observable类代表被观察的对象,Observer接口定义了观察者的基本行为。当Observable对象的状态发生变化时,会调用Observer接口...
Observer设计模式,也被称为“发布-订阅”(Publish-Subscribe)模式或“依赖倒置”模式,是软件设计中的一种行为模式。...在Java、C#、Python等面向对象语言中,都有内置的Observer支持,使得实现这一模式更加便捷。
该示例是翻写一老外Observer Pattern的例子,本人觉得该示例是对该模式的非常精典的说明,于是花点功夫来翻写它,因为他的代码没有注释说明该模式的设计思想怎样体现在代码中去,所以,本人结合代码注释了关键代码的...
在Java中,`java.util.Observable`和`java.util.Observer`是内置的支持观察者模式的类。你可以创建一个类继承`Observable`,并在需要时调用`setChanged()`和`notifyObservers()`方法来通知观察者。同时,观察者实现`...
Java中的`java.util.Observable`和`java.util.Observer`接口就是对这种模式的内置支持。 此外,创建型设计模式主要处理对象的创建。"工厂模式"提供了一种创建对象的最佳方式,避免直接new操作,提高了代码的可扩展...
在Java中,Observer模式通过`java.util.Observable`和`java.util.Observer`接口实现。 在给定的文件中,我们看到一个具体的Observer模式应用例子,涉及到`Product`类和两个观察者`NameObserver`和`PriceObserver`。...
在Java中,这种模式已经被内置到语言核心,使得开发者可以轻松地实现事件驱动的编程。本文将深入探讨Java内置的观察者模式,包括其原理、实现方式以及实际应用。 ### 观察者模式的核心概念 1. **主题(Subject)**...
在这个场景中,我们将讨论如何在Java中应用Observer模式,特别是在电子商务系统中的应用。 Observer模式的核心思想是定义一个一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象的状态发生变化...
在Java中,`java.util.Observable`和`java.util.Observer`接口提供了一种内置的实现。 1. **Observable对象**:这是被观察的对象,它可以注册观察者并通知他们状态的改变。在选民投票的例子中,可能是一个存储投票...
本例中的观察者模式由四个主要类构成:`Client`、`Subject`、`Observer` 和 `SubstanceObserver`。下面对每个类进行详细介绍。 ##### Client 类 `Client` 类是程序的入口,通过创建具体的被观察者和观察者对象,...
在C++编程中,Observer模式通常通过函数指针或者接口来实现,这两种方法在VC6.0环境下同样适用。 首先,我们来探讨使用函数指针实现Observer模式。函数指针是C++中的一个重要特性,它允许我们将函数作为其他函数的...
- **观察者模式(Observer)**:定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 - **状态模式(State)**:允许对象在其内部状态改变时改变它的行为,...
在Java中,`java.util.Observable`类和`java.util.Observer`接口提供了实现Observer模式的基础框架。主体类通常扩展`Observable`,并调用其`addObserver()`方法来注册新的观察者,`deleteObserver()`用于移除,而`...
### Observer与Command模式在VTK类库设计中的应用研究 #### 一、引言 VTK(Visualization Toolkit)是一套开源的三维可视化开发库,在国外得到了广泛应用,而在国内的研究相对较少,导致其应用受到一定限制。为了...
在Java中,`java.util.Observable`和`java.util.Observer`接口就是对观察者模式的实现。 8. **策略模式**:策略模式定义了一系列算法,并将每个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用...
在这个“重温Observer模式--热水器·改”的讨论中,作者将再次阐述如何不依赖C#的委托和事件来实现Observer模式,而是采用GOF(GoF,Gang of Four)的经典方式。 在Observer模式中,有两个核心角色:Subject(主题...
在Java中,标准库提供了对Observer模式的支持,主要包括`java.util.Observable`类和`java.util.Observer`接口。 ##### 3.1 `java.util.Observer`接口 ```java public interface Observer { void update(Observable...
Java中String对象池就是享元模式的应用。 9. 组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。Java集合框架中的Composite接口就是组合模式的体现。 ...
请选用适当的设计模式,编写一个股票行情分析软件,随着时间的推移和股票价格的变动,实现各种指标的动态更新(要求至少实现一个股票的分时图和K线图:为降低编程工作量,K线图可以用开盘价、收盘价、最高价、最低价...
具体实现上,Java中的Observer模式主要依赖于java.util.Observable和java.util.Observer这两个类。Observable类代表了被观察的对象,它可以存储多个Observer,并提供方法来添加、删除Observer,以及通知它们状态的...