设计模式学习----观察者模式(事件监听实现)

本文介绍了设计模式中的观察者模式,通过GUI编程中的事件监听机制举例,阐述了如何利用观察者模式在数据变化时通知其他类。文章通过交通灯的例子,展示了如何创建主题接口和观察者接口,并解释了观察者模式的工作原理,帮助读者理解其在实际编程中的应用。
摘要由CSDN通过智能技术生成

    今天学习了新的设计模式----观察者模式,其实这种设计模式,我们早就接触过,做过GUI编程的同学肯定会知道,事件的注册监听等机制,其实这个机制的实现就是利用了观察者模式。

    可能在程序中,我们需要在某些数据变化时,其他的类做出一些响应,我们总不能开一个线程,每隔一段时间就去检测数据有没有发生变化吧,那样效率很低,我们更希望那些具有变化属性的类能够主动将自己的变化推送给,希望检测这些变化的其他类。正如我们去医院排队,不能隔两分钟就去问大夫“轮到我了吗”,而是坐在那里等大夫的通知,大家都接收到一个名字信号,叫到谁谁就去~ 而观察者就是这样一种模式,大夫的名单就是被观察者,也叫做一个 主题。每一个病人就是一个观察者。因而,观察者模式也叫做 发布订阅模式(相信使用google reader的朋友更容易理解)。

    下面 是一副来自维基百科的结构图



  可以看出来,观察者模式,是一种一对多的关系,即多个观察者监听一个主题。

  下面用一段代码给大家解释 观察者模式,通过这个例子,大家也可以看到一个缩水版的 事件监听机制的实现~我自己编写了一个交通灯的例子,应该比较形象

  首先创建一个主题接口,他声明了一个被观察者应该具有的基本方法,包括添加观察者,删除观察者,通知

package observerpattern;

/**
 *
 *
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值