Java观察者模式(Observer Pattern),简单说观察者模式包含四种角色:抽象被观察者角色、具体被观察者角色、抽象观察者角色和具体观察者角色;
针对观察者与被观察者设定场景:每天我们关心的天气预报统一由中国气象局发布(被观察者),每个发布气象平台(观察者)订阅中国气象局;天气发生变化气象局发布通知给各个平台,然后平台做相应的更新操作。当然,现实中该场景是不存在的,权宜是为了加深理解Java观察者模式而生,因为气象局是不会去通知各个订阅平台,更新操作是各个平台定时刷新完成。
其中Java本身提供观察者模式的接口供开发者使用,在 java.util包下,包含接口Observer及类Observable,接口Observer是扮演抽象观察者角色,包含一个update()方法,而类Observable则扮演抽象被观察者角色,开发者只需要继承该类就能很好的运用观察者模式。闲话少说,贴出代码以供参考:
抽象被观察者角色
/**
* @author effine
* @date 2013年10月4日 下午11:02:21
*/
package cn.effine.observer;
/* 抽象被观察者角色 */
public interface IWitched {
/* 添加观察者 */
public void addWitcher(IWitchers w);
/* 删除观察者 */
public void deleteWitcher(IWitchers w);
/* 被观察者 发生变化,通知观察者 */
public void notifyWitcher(Object o);
}
阅读全文