Java设计模式-观察者模式入门
涉及到类:java.util.Observable;接口:java.util.Observer;
public class Observable extends Object表示被专注的对象,有方法:
1.public void addObserver(Observer o); // 增加实现Observer标准的观察者对象;
2.protected void setChanged(); // 标记被关注对象的某些信息已经修改;
3.public boolean hasChanged(); // 当2被调用时,他将返回true;
4.public void notifyObservers(); // 通知当前所有观察者关注对象有所改变,这是一种唤醒操作,将触发Observer对象执行操作;
5.public void notifyObservers(Object arg); // 同上,同时指出改变的参数是arg;
public interface Observer
{
void update(Observerable o, Object arg); // 抽象方法,o–被关注对象, arg–被关注对象中被改变的属性参数;
}
观察者必须实现该接口;
——-实例:
package com.mldn;
import java.util.Observable; // 被观察对象类
import java.util.Observer; // 载入观察者接口
class WhatYouCare extends Observable
{
private Object info; // 可能被改变的数据信息
public WhatYouCare(Object info)
{
this.info = info;
}
public Object getInfo() // 访问器
{
return this.info;
}
public void setInfo(Object info)
{
this.info = info; // 更改器
super.setChanged(); // 标记当前对象设置已改变
super.notifyObservers(info); // 唤醒所有Observer对象:info变量已改变!
}
public String toString()
{
return “这是人们关心的:” + this.info;
}
}
class WhoCareInfo implements Observer
{
public void update(Observable o, Object arg) // 覆写方法
{
System.out.println(o); // 打印关注的是什么
System.out.println(“情况这样改变:” + arg); // 打印改变的是什么
System.out.println(“我的反应:” + this.response());
}
public String response()
{
return “哇塞!这情况…”;
}
}
public class ObserveDemo
{
public static void main(String[] args)
{
WhatYouCare wyc = new WhatYouCare(“股市行情稳中有升”); // 实例化被观察者
WhoCareInfo wci1 = new WhoCareInfo(); // 实例化观察者
WhoCareInfo wci2 = new WhoCareInfo(); // 实例化观察者
WhoCareInfo wci3 = new WhoCareInfo(); // 实例化观察者
wyc.addObserver(wci1); // 增加观察者
wyc.addObserver(wci2); // 增加观察者
wyc.addObserver(wci3); // 增加观察者
wyc.setInfo(“股市行情狂跌”); // 改变信息数据
}
}
/*
administrator@xu-desktop:~$ javac -d . work/ObserveDemo.java
administrator@xu-desktop:~$ java com.mldn.ObserveDemo
这是人们关心的:股市行情狂跌
情况这样改变:股市行情狂跌
我的反应:哇塞!这情况…
这是人们关心的:股市行情狂跌
情况这样改变:股市行情狂跌
我的反应:哇塞!这情况…
这是人们关心的:股市行情狂跌
情况这样改变:股市行情狂跌
我的反应:哇塞!这情况…
*/
声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 嗅谱网
转载请注明:转自《Java设计模式-观察者模式入门》
本文地址:http://www.xiupu.net/archives-77.html
关注公众号:
微信赞赏
支付宝赞赏