设计模式深入浅出--19.观察者模式简单实例中Observer和Observable及其在JDK中的应用

观察者模式

定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发送变化时,它的所有依赖者(观察者)都会收到通知并更新

类型:行为型

适用场景:

关联行为场景,建立一套触发机制

优点:

观察者和被观察者之间建立一个抽象的耦合

观察者模式支持广播通信

缺点:

观察者之间有过多的细节依赖。太高时间消耗及程序复杂度

使用要得当,要避免循环调用

Coding:

创建Course:

 创建Qustion类

创建Teacher类(Teacher是观察者,Course是被观察者)

 JDK中对于被观察者提供了Observable类

进入到Observable

不仅是使用了线程安全的Vector,而且它内部的很多方法也同样时线程安全的

通知观察者

 回到Course类中,编写productQuestion()方法

 查看setChanged()方法

将问题发送给对应的观察者

让Teacher这个观察者实现Observer接口

进入到Observer,可以看到它只有一个方法

第一个参数o:被观察的对象

第二个参数arg:notifyObservers方法传过来的对象(也就是被观察者里面通过notifyObservers方法传递过来的参数)

 

继续编写update()方法

 创建Test类

运行结果

查看当前UML类图

总结:观察者模式核心在于Observer和Observable两个接口将三个类联系起来

其主要业务逻辑在update()方法中进行处理。

在增加一个老师:

JDK中的应用 :

在java中有一个按钮,当我们按下之后,就会触发相应的事件,这就是监听,采用的也是观察者模式。

类Event

 类RequestContextListener

进入到类ServletRequestListener

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值