1.jdk默认对观察者模式提供了支持
被观察着继承Observable
观察者实现Observer接口
被观察者通过调用notifyObservers()方法通知观察者
2.代码实现
/**
* 被观察者
* @author Administrator
*
*/
public class Watched extends Observable {
public void count(int num){
for(;num>=0;num--){
//通知之前一定要设定setChanged
this.setChanged();
//this.notifyObservers();
//如果需要为观察者传递信息,调用此方法,observer 的update第二个参数就能接受
this.notifyObservers(num);
try {
Thread.sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Watcher implements Observer {
/**
* arg0:被观查者对象
* arg1:被观察者传递给观察者信息
*/
@Override
public void update(Observable arg0, Object arg1) {
System.out.println("update....."+arg1);
}
}
public class Watcher2 implements Observer {
@Override
public void update(Observable arg0, Object arg1) {
System.out.println("update2....."+arg1);
}
}
客户端
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
Watched watched = new Watched();
Observer watcher = new Watcher();
watched.addObserver(watcher);
Observer watcher2 = new Watcher2();
watched.addObserver(watcher2);
/**
* 那个观察者后被加入,那个观察者update方法就想执行
*/
watched.count(10);
}
}
分享到:
相关推荐
这些类和接口可以帮助开发者轻松地实现观察者模式。 1. **Observable类**: - 提供了创建可被监控对象的基础。 - 当对象的状态发生变化时,可以调用`setChanged()`方法标记对象状态已更改。 - 调用`...
为了实现观察者模式,你需要创建一个实现了`Observer`接口的类,这个类代表具体的观察者。在这个类中,你需要实现`update()`方法,定义当接收到通知时应执行的操作。 接下来,我们可以创建一个具体的`Observable`...
首先,我们要理解JDK API中的观察者模式实现。`java.util.Observable`类代表可被观察的对象,它可以有多个观察者。而`java.util.Observer`接口则定义了观察者的接口,每个观察者都需要实现这个接口以定义其更新行为...
下面我们将详细介绍如何在Java中实现观察者模式。 1. **定义主题(Subject)**:在Java中,我们通常通过继承`Observable`类来创建被观察的对象。这个类会维护一个观察者列表,并提供添加、删除和通知观察者的方法。...
实现观察者模式之后,UserAction类不再需要关心具体有多少个观察者,或者这些观察者具体是做什么的。当需要添加新的观察者时,只需实现UserActionSubscriber接口,并注册到UserAction类中即可。这种模式大大降低了...
总结起来,Java8为实现观察者模式提供了新的可能性,通过lambda表达式和并发工具,我们可以编写出更加简洁、高效且线程安全的观察者模式实现。然而,理解和解决观察者模式中的复杂问题,如内存泄漏、线程安全和性能...
`java.util.Observable` 类和 `java.util.Observer` 接口提供了观察者模式的基础实现。任何继承自 `Observable` 的类都可以成为主题,而实现 `Observer` 接口的类则可以作为观察者。 在实际开发中,观察者模式可以...
Java标准库提供了`java.util.Observable`和`java.util.Observer`两个类来支持观察者模式。`Observable`类代表观察目标,`Observer`接口代表观察者。用户可以通过继承`Observable`类来创建自己的观察目标,并通过实现...
定义一个 `Notice` 类作为主题接口,学生、老师和行政人员类实现观察者接口。若要实现一个观察者可以订阅多个信息,可以通过让观察者持有多个订阅(订阅主题的引用)来实现,使得一个观察者可以监听多个信息源。 3....
在Java语言中,JDK提供了对观察者模式的支持。java.util.Observer接口和java.util.Observable类是这一支持的体现。Observable类是Subject的基类,任何需要被观察的类都可以继承这个类。它提供了添加/删除Observer的...
JDK里提供的observer设计模式的实现由java.util.Observable类和 java.util.Observer接口组成。从名字上可以清楚的看出两者在Observer 设计模式中分别扮演的角色:Observer是观察者角色,Observable是被观察目标...
`java.util.Observable`和`java.util.Observer`接口就是观察者模式的实现。 14. 模板方法模式(Template Method):定义一个操作中的算法骨架,而将一些步骤延迟到子类中。`java.io.InputStream`的`read()`方法就是...
15. **Observer(观察者模式)**:`java.util.Observer`和`Observable`,以及Swing中的监听器,当对象状态改变时通知其他对象。 16. **Mediator(中介者模式)**:如`Swing`的`ButtonGroup`,协调多个组件之间的...
2. **观察者模式**:观察者模式用于实现发布-订阅机制。在这个实验中,`Notice` 类作为主题接口,实现了发布信息的功能。`Student`、`Teacher` 和 `Admin` 类作为观察者,实现了订阅信息的接口。当 `Notice` 类发布...
实验代码包括UML类图和具体实现,如`DrawShape`类负责绘制所有形状,`MyShape`及其子类代表不同形状,以及`Notice`、`Student`、`Teacher`和`Admin`类实现观察者模式。 这个实验旨在帮助学生深入理解设计模式的概念...
设计模式分为三大类:创建型模式(如单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式)、结构型模式(如适配器模式、装饰器模式、代理模式、桥接模式、组合模式、外观模式、享元模式)和行为型模式(如...
JDK 动态代理技术是 Java 语言自身对动态代理的支持,类似于 JDK 中在 java.util 包中提供 Observable 类和 Observer 接口提供对观察者模式的语言级支持。动态代理的优点是可以动态地为软件增加功能。 ...
在Java8中实现观察者模式,我们可以利用Java的接口和事件处理机制。Java的`java.util.Observable`类和`java.util.Observer`接口提供了基础框架。`Observable`类代表被观察的目标,它可以被多个观察者(实现了`...
3. **NIO.2 (New I/O 2)**: JDK 1.6引入了NIO.2,提供异步I/O操作,增加了文件系统相关的API,如文件路径、文件属性、文件观察者等。 4. **动态代理增强**: 支持接口中的默认方法,允许代理类实现接口的默认方法,...
这对于设计模式如观察者模式等提供了更大的灵活性。 此外,新版本还引入了方法引用来代替传统的匿名内部类,简化了代码。方法引用可以是静态方法引用、实例方法引用或构造器方法引用,使得代码更加紧凑且易于理解。...