Java设计模式-观察者模式入门

涉及到类:.util.Observable;接口:.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 .util.Observable; // 被观察对象类

import .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.

administrator@xu-desktop:~$ java com.mldn.ObserveDemo

这是人们关心的:股市行情狂跌

情况这样改变:股市行情狂跌

我的反应:哇塞!这情况…

这是人们关心的:股市行情狂跌

情况这样改变:股市行情狂跌

我的反应:哇塞!这情况…

这是人们关心的:股市行情狂跌

情况这样改变:股市行情狂跌

我的反应:哇塞!这情况…

 

*/

 

声明: 除非转自他站(如有侵权,请联系处理)外,本文采用 BY-NC-SA 协议进行授权 | 智乐兔
转载请注明:转自《Java设计模式-观察者模式入门
本文地址:https://www.zhiletu.com/archives-77.html
关注公众号:智乐兔

赞赏

wechat pay微信赞赏alipay pay支付宝赞赏

上一篇
下一篇

相关文章

在线留言

你必须 登录后 才能留言!

在线客服
在线客服 X

售前: 点击这里给我发消息
售后: 点击这里给我发消息

智乐兔官微