设计模式阅读笔记(2)-----------观察者模式

观察者模式(Observer)定义对象间的一对多的依赖关系,以便当一个对象改变时,所有依赖于它的对象都得到通知并且自动刷新。

从定义来理解很容易就可以分析出了该模式的结构。简单的来说,就是有个发布者对象,发布者对象掌握着信息资源,其他接收者对象需要这些信息资源。当信息资源改变的时候,我们希望其他接收者都可以知道 这些改变。

通过思考我们自己就可以设计出具有该功能的框架了,发布者有个集合属性,提供方法将接收者添加或移出集合,接收者实现统一的升级信息资源的接口。当发布者的信息资源发生了改变时,通过该集合,调用接口中升级信息资源的方法。这样,就可以将处在集合中的所有接收者都获得变更。而接收者通过发布者的添加方法让自己处于集合中,并决定自己什么时候退出集合。按现实生活中的例子来讲,就是订报纸一样的,报社拥有新闻信息,是发布者,而我们相当于观察者,报社有个接电话的方法,我们打电话告知报社我们需要新闻。报社记录下我们的地址,相当于报社拥有了我们的引用,而报社有个表单,记下了所有的引用。当报社出版报纸后,根据表单,将报纸发往每个观察者,这样我们就获得了报纸。

这种模式在java的gui编程中就有体现,在事件监听上使用,按钮就是发布者,而我们编写的事件就是观察者,时间需要知道按钮什么时候被点击了,当按钮被点击后,就通知所有登记的事件。

当然,这是发布者主动的“推”出了信息,还有另一种方法是观察者主动去“拉”取信息。观察者依赖发布者,保存了发布者的引用,因此可以主动获得发布者的信息。

该模式的图如下:




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值