美文网首页Java学习笔记
观察者模式——Observer

观察者模式——Observer

作者: Ling912 | 来源:发表于2016-08-16 17:24 被阅读84次

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

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

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

    观察者接口

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

    被观察者接口

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

    观察者

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

    被观察者

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

    最后写一个测试类。

    测试类

    接下里看测试类:

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

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

    相关文章

      网友评论

        本文标题:观察者模式——Observer

        本文链接:https://www.haomeiwen.com/subject/ltbpsttx.html