打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
观察者模式详解

观察者模式(Observer Pattern): 定义了对象之间的一对多的依赖, 这样一来, 当一个对象改变状态时, 它的所有依赖者都会收到通知并自动更新.

使用方法:

1. 首先新建主题(subject)接口, 负责注册(register)\删除(remove)\通知(notify)观察者; 观察者(observer)接口, 负责更新(update)数据;

主题(subject)接口: 注册观察者(registerObserver), 删除观察者(removeObserver), 通知观察者(notifyObservers, 通知所有观察者);

观察者(observer)接口: 更新(update);

代码:

/** * @time 2014年5月22日 */package observer; /** * @author C.L.Wang * */public interface Subject { public void registerObserver(Observer o); public void removeObserver(Observer o); public void notifyObervers(); } /** * @time 2014年5月22日 */package observer; /** * @author C.L.Wang * */public interface Observer { public void update(float temp, float humidity, float pressure); } /** * @time 2014年5月22日 */package observer; /** * @author C.L.Wang * */public interface DisplayElement { public void display(); }

2. 实现主题(subject)接口, 通过列表(list)的形式注册(register)和删除(remove)观察者,

通知(notify)观察者时, 循环调用所有已注册的观察者的更新(update)动作;

通过接口函数(set), 封装通知(notify)动作, 传入参数并进行通知.

代码:

/** * @time 2014年5月22日 */package observer; import java.util.ArrayList; /** * @author C.L.Wang * */public class WeatherData implements Subject { public ArrayList observers; private float temperature; private float humidity; //湿度 private float pressure; public WeatherData() { observers = new ArrayList(); } /* (non-Javadoc) * @see observer.Subject#registerObserver(observer.Observer) */ @Override public void registerObserver(Observer o) { // TODO Auto-generated method stub observers.add(o); } /* (non-Javadoc) * @see observer.Subject#removeObserver(observer.Observer) */ @Override public void removeObserver(Observer o) { // TODO Auto-generated method stub int i = observers.indexOf(o); if (i>=0) { observers.remove(i); } } /* (non-Javadoc) * @see observer.Subject#notifyObervers() */ @Override public void notifyObervers() { // TODO Auto-generated method stub for (int i=0; i

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
《Head First设计模式》阅读笔记.第二章
JAVA设计模式之观察者模式 - Observer
观察者模式 Observer Pattern
观察者模式
Android设计模式系列(2)
JAVA设计模式之观察者模式
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服