java设计模式之观察者模式

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

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

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




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



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




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



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

最后写一个测试类。



接下里看测试类:

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

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


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值