本文概述
- 好处
- 用法
- 用于观察者模式的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 {@Overridepublic 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.
【观察者模式】输出:
文章图片
推荐阅读
- 原型设计模式
- 对象池模式
- Android PullToRrefresh 自定义下拉刷新动画 (listviewscrollview等)
- POJ2385Apple Catching(简单DP)
- 体验Windows 2008 R2的RemoteApp
- Android 制作类似支付圆圈和打钩界面ProgressWheel
- Android零基础入门第60节(日历视图CalendarView和定时器Chronometer)
- Make You Happy
- eclipse导入Android项目出现红色感叹号----Unsolved