本文概述
观察者模式说:“只需定义一对一的依赖关系, 以便当一个对象更改状态时, 所有依赖关系都会得到通知并自动更新”。
备忘录模式也称为依赖项或发布-订阅。
好处
- 它描述了对象与观察者之间的耦合。
- 它提供了对广播类型通信的支持。
用法
- 当一个对象中状态的变化必须反映在另一个对象中而不保持对象紧密耦合时。
- 当我们编写该框架时, 将来需要使用新的观察器以最小的代价来增强它。
用于观察者模式的UML
观察者模式的实现
步骤1:
创建一个ResponseHandler1类, 它将实现java.util.Observer接口。
//This is a class.
import java.util.Observable;
import java.util.Observer;
public class ResponseHandler1 implements Observer {
private String resp;
public void update(Observable obj, Object arg) {
if (arg instanceof String) {
resp = (String) arg;
System.out.println("\nReceived Response: " + resp );
}
}
}// End of the ResponseHandler1 interface.
第2步:
创建一个ResponseHandler2类, 它将实现java.util.Observer接口。
//This is a class.
import java.util.Observable;
import java.util.Observer;
public class ResponseHandler2 implements Observer {
private String resp;
public void update(Observable obj, Object arg) {
if (arg instanceof String) {
resp = (String) arg;
System.out.println("\nReceived Response: " + resp );
}
}
}// End of the ResponseHandler2 interface.
第三步:
创建一个EventSource类, 它将扩展java.util.Observable类。
//This is a class.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Observable;
public class EventSource extends Observable implements Runnable {
@Override
public void run() {
try {
final InputStreamReader isr = new InputStreamReader(System.in);
final BufferedReader br = new BufferedReader(isr);
while (true) {
String response = br.readLine();
setChanged();
notifyObservers(response);
}
}
catch (IOException e) {
e.printStackTrace();
}
}
}// End of the Eventsource class.
输出:
评论前必须登录!
注册