观察者模式是对象的行为模式,又叫发布-订阅模式、模型-视图模式、源-监听器模式或从属者模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动的更新自己。
可以看出,在这个观察者模式的实现里有下面这些角色:
- 抽象主题(Subject)角色:主题角色把所有观察者对象的引用保存在一个聚集(比如Vector对象)里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者对象,主题角色又叫做抽象被观察者(Observable)角色,一般用一个类或一个接口实现。
- 抽象观察者(Observer)角色:为所有具体观察者角色定义一个接口,在得到主题对象通知时更新自己。这个接口叫做更新接口。抽象观察者角色一般用一个抽象类或接口实现。
- 具体主题(ConcreteSubject)角色:在具体主题内部状态发生变化时,给所以登记过的观察者发出通知。
- 具体观察者(ConcreteObserver)角色:实现抽象观察者所定义的更新接口,以便使本身的状态和主题的状态相协调,即当接收到主题通知时更新自己。
观察者模式的应用
- j2ee中的Session事件
当Session被激活、钝化、一个属性的添加、修改、删除都会产生Session事件。要想监听某一事件就必须实现某一事件的监听器接口,其实现类可以看做是具体的观察者。将某一监听器实现类配置到web.xml中,即表明像j2ee容器注册了此事件(或者叫主题)的监听。当j2ee容器发现Session状态改变时就会通知相应的注册的监听器,调用相应的接口方法。
- AWT中的事件监听
为了得到鼠标事件,一个客户类根据需要实现了MouseListener接口。然后需要将这个实现类登记到一个Frame构件上,以便接收到这个构件的鼠标事件。这样如果用户在构件上单击鼠标的话,构件便会激发所有登记过的MouseListener对象。
参考书籍:Java与模式
- 大小: 30.5 KB
分享到:
相关推荐
在Java、C#等面向对象编程语言中,观察者模式被广泛应用于用户界面、事件处理、游戏编程等领域。 在观察者模式中,通常有两个主要角色:主题(Subject)和观察者(Observer)。主题是被观察的对象,它持有一个观察...
在Java中,`java.util.Observable`类和`java.util.Observer`接口提供了对观察者模式的内置支持。`Observable`类代表被观察的对象,它可以有多个观察者,而`Observer`接口则定义了观察者的通用行为。 ### `...
在Java中,观察者模式通常通过`java.util.Observable`和`java.util.Observer`这两个接口来实现。`Observable`类代表被观察的对象,它可以添加多个观察者,并在状态变化时通知它们。而`Observer`接口则定义了观察者的...
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
观察者模式在Java中得到了很好的支持,`java.util.Observable`和`java.util.Observer`是Java标准库提供的观察者模式实现。开发者可以方便地利用这两个类实现观察者模式,也可以根据实际需求自定义观察者接口和主题类...
《观察者模式——深入解析与应用》 观察者模式(Observer Pattern)是设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种...
在Java中,观察者模式通常通过Java内置的`java.util.Observable`类和`java.util.Observer`接口来实现。`Observable`类代表被观察的对象,它可以有多个观察者,而`Observer`接口则定义了观察者的通用行为。 首先,...
在Java中,观察者模式的实现通常基于Java的内置接口`java.util.Observer`和`java.util.Observable`。下面将详细解释观察者模式的概念、结构以及如何在Java中应用这个模式。 **观察者模式的核心概念:** 1. **主题...
观察者模式(Observer Pattern)是设计模式中的一种行为模式,它允许一个对象,当其状态发生改变时,能够自动通知所有依赖它的其他对象。在Java中,这种模式已经被内置到语言核心,使得开发者可以轻松地实现事件驱动...
在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的设计模式:Model-View-Controller(MVC)模式和Observer(观察者)模式。这两种模式在JavaWeb开发中扮演着至关重要的角色。 ...
**观察者模式(Observer Pattern)**是软件设计模式中的一种行为模式,它在Java中有着广泛的应用。这个模式的核心思想是“一对多”的依赖关系,即一个主题对象(Subject)可以被多个观察者(Observer)关注,当主题...
我们说学习Java应该从Swing开始,那么学习Swing最重要的思想就是对于观察者模式的理解(Observer Pattern)。因为,该设计模式在Java Swing框架中贯穿了始终。对于C#的委托、代理概念所使用的Callback(回调模式--...
在Java中,我们可以使用`java.util.Observable`和`java.util.Observer`接口来实现观察者模式。但在这个例子中,我们可能看到的是自定义实现的观察者模式,因为文件列表中包含的`Test.java`, `Customer1.java`, `...
在Java中,`java.util.Observable`和`java.util.Observer`接口提供了内置的支持来实现观察者模式。开发者可以创建自己的类实现这两个接口,或者使用更现代的事件监听框架如JavaFX或Swing中的事件处理机制。 观察者...
Java标准库提供了`java.util.Observable`和`java.util.Observer`接口,用于实现观察者模式。 首先,我们需要创建一个`Observable`类的子类,代表我们的主题。这个类需要维护一个观察者列表,并提供添加、删除观察者...
在Java编程领域,设计模式是一种被广泛采用的最佳实践,它为解决常见的软件设计问题提供...在Java中,`java.util.Observable`和`java.util.Observer`是内置的观察者模式实现,可以方便地用于快速构建观察者模式的系统。
在Java中,观察者模式可以通过Java的内置接口`java.util.Observer`和`java.util.Observable`来实现。`Observer`接口代表观察者,而`Observable`类代表被观察的对象,也称为主题(Subject)。下面将详细介绍这两个...
在Java中,`java.util.Observable` 和 `java.util.Observer` 是内置支持观察者模式的类。 标题中的“java观察者模式Demo”指的是使用Java语言来演示观察者模式的应用。通常,这个Demo会包含一个可观察的对象...