Java学习笔记

观察者模式——Observer

2016-08-16  本文已影响84人  Ling912

观察者模式,其实就是观察者和被观察者之间的通信。

直接上代码吧,理论先不讲了:

首先定义观察者和被观察者的接口。

观察者接口

观察者里面比较简单,就定义了一个更新数据的接口;

被观察者接口

被观察者里面有三个方法,分别是添加观察者,移除观察者,和通知观察者;

观察者

观察者实现观察者接口的更新的方法,这里只打印一下接收到的信息。

被观察者

被观察者分别实现添加,更新和通知观察者三个方法,除此以外,还要写一个集合(List)来存放观察者。构造方法没什么可说的了,添加和删除观察者也就是list的add和remove,最后一个notifyOberver() 这个方法通知观察者,首先遍历一点观察者的List,确保能够通知到每一个观察者,然后调用观察者的update的方法。

最后写一个测试类。

测试类

接下里看测试类:

line7,定义一个被观察者,ling9-ling11,添加两个观察者(不要问我为什么一个观察者要搞一个对象去接收,一个却直接new,往后看你就明白了!哈哈!),ling13,通知观察者,然后看输出的打印台,打印台上是不是能够接收到两句被观察者发出的消息,这就对了嘛,因为观察者有两个,说明两个观察者都接收到了被观察者发出的消息。

line15,移除了一个观察者(这里就是为什么前面一个用对像去接收,一个却直接new,因为我直接new的话,就没办法移除了,哈哈!),然后看line17,通知观察者,再看控制台的输出,控制台的输出 "this is message_2!"  是不是只输出了一次,这就对了嘛,因为观察者已经被我移除掉了一个,就只剩下一个了,自然也就只能打印出来一个咯!

上一篇下一篇

猜你喜欢

热点阅读