首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

观察者模式示范

2012-10-26 
观察者模式示例观察者模式中一般有两种,一种是推数据的模式(被观测对象向观测对象 送出数据,即在被观测对

观察者模式示例

观察者模式中一般有两种,一种是推数据的模式(被观测对象向观测对象 送出数据,即在被观测对象发生改变时,主动告知被观测对象),一种是拉模式(观测对象主动去被观测对象去查询是否发生了变化)。虽然方式略有不同,但是基本上实现的原理是相似的。

????? 从java提供的观察者模式的实现入手很容易理解。java提供了一个Observable基类和一个Observer接口,分别是被观测对象基类和观察者需要实现的接口。

???? 简要分析这两个类:1 被观察者对象基类,此基类为于java.util包中,下面贴源码看一下

notifyObservers(event);
}


}
?



接下来看两个观察者

?




最后看一下如何 运行的示例

public class TestObserverPattern {     public static void main(String[] args){           ResourceBean bean = new ResourceBean();//被观测对象           LockOberver lock = new LockOberver();           UnlockOberver unlock = new UnlockOberver();                      bean.addObserver(lock);           bean.addObserver(unlock);                      bean.doSomething("lock");           bean.doSomething("freeAccess");           bean.doSomething("unlock");                           }    }
?


运行的结果:

写道in resource bean event:lock has done

收到锁定的通知 com.yasouth.ResourceBean@4a5ab2变化值:lock

in resource bean event:freeAccess has done

in resource bean event:unlock has done

输出收到解锁的通知:com.yasouth.ResourceBean@4a5ab2 参数值:unlock?



这样一个简单的观察者示例就结束了


后续的工作是想了解一下,观察者模式中在java同步机制的具体应用,待续

?

热点排行