设计模式-观察者模式
来源:互联网 发布:您的网络已被劫持 编辑:程序博客网 时间:2024/04/27 08:11
第一种方式:拉 /** * @author wangmingjie * @date 2008-6-29下午07:21:38 */ import java.util.Observable; import java.util.Observer; public class EvenObserver implements Observer { public void update(Observable o, Object arg) { if (o instanceof NumsObservable) if (((NumsObservable) o).getData()%2 == 0) { NumsObservable myObserable = (NumsObservable) o; System.out.println("EvenObserver:Data has changed to " + myObserable.getData()); } } }
- package
- package com.work.pattern.observer;
- import java.util.Observable;
- /**
- * @author wangmingjie
- * @date 2008-6-29下午07:19:30
- */
- public class NumsObservable extends Observable {
- public final static Integer ODD = 1;
- public final static Integer EVEN = 2;
- private int data = 0;
- public int getData() {
- return data;
- }
- public void setData(int i) {
- data = i;
- Integer flag = EVEN;
- if ((data & 0x0001) == 1)
- flag = ODD;
- setChanged();
- notifyObservers();//拉
- }
- // setChange()方法用来设置一个内部标志位注明数据发生了变化;notifyObservers()方法会去调用观察者对象列表中所有的Observer的update()方法,通知它们数据发生了变化。
- // 只有在setChange()被调用后,notifyObservers()才会去调用update()。
- }
测试代码如下:
public class ObserverTest {
public static void main(String[] args) {
NumsObservable number = new NumsObservable();
number.addObserver(new EvenObserver());
number.setData(1);
number.setData(2);
number.setData(3);
}
}
第二中方式是推:
- public class NumsObservable extends Observable {
- public final static Integer ODD = 1;
- public final static Integer EVEN = 2;
- private int data = 0;
- public int getData() {
- return data;
- }
- public void setData(int i) {
- data = i;
- Integer flag = EVEN;
- if ((data & 0x0001) == 1)
- flag = ODD;
- setChanged();
- notifyObservers(flag);//推送方式
- }
- // setChange()方法用来设置一个内部标志位注明数据发生了变化;notifyObservers()方法会去调用观察者对象列表中所有的Observer的update()方法,通知它们数据发生了变化。
- // 只有在setChange()被调用后,notifyObservers()才会去调用update()。
- }
- public class EvenObserver implements Observer {
- public void update(Observable o, Object arg) {
- if (arg == NumsObservable.EVEN) {
- NumsObservable myObserable = (NumsObservable) o;
- System.out.println("EvenObserver:Data has changed to "
- + myObserable.getData());
- }
- }
- }
- 模式设计:观察者模式
- 设计模式-----观察者模式
- 设计模式-观察者模式
- 设计模式--观察者模式
- 设计模式:观察者模式
- 设计模式-----观察者模式
- 设计模式:观察者模式
- 设计模式-观察者模式
- 设计模式 观察者模式
- 设计模式-观察者模式
- 设计模式-【观察者模式】
- 设计模式-观察者模式
- 设计模式 -- 观察者模式
- 设计模式-观察者模式
- 【设计模式】观察者模式
- 设计模式- 观察者模式
- 设计模式- 观察者模式
- 设计模式--观察者模式
- C#无刷新的更新界面内容
- Google Chrome浏览器试用评测
- 一个基本的数据库操作类``
- aspnetpager的简单绑定使用。。
- 脐穿归来
- 设计模式-观察者模式
- 对 DeskBand 编制者的一个好消息
- 打造windows下的嵌入式开发工具(4):mpfr-2.3.1
- filter屬性全集
- 学习笔记--ssh的配置文件
- vfp向HTTP发送文件
- 隐式调用DLL
- datagrid页序号
- 书评:《Introducing Silverlight 2》- 第二章