观察者模式
定义:定义了对象之间的一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发送变化时,它的所有依赖者(观察者)都会收到通知并更新
类型:行为型
适用场景:
关联行为场景,建立一套触发机制
优点:
观察者和被观察者之间建立一个抽象的耦合
观察者模式支持广播通信
缺点:
观察者之间有过多的细节依赖。太高时间消耗及程序复杂度
使用要得当,要避免循环调用
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
Java 面试宝典是大明哥全力打造的 Java 精品面试题,它是一份靠谱、强大、详细、经典的 Java 后端面试宝典。它不仅仅只是一道道面试题,而是一套完整的 Java 知识体系,一套你 Java 知识点的扫盲贴。
它的内容包括:
- 大厂真题:Java 面试宝典里面的题目都是最近几年的高频的大厂面试真题。
- 原创内容:Java 面试宝典内容全部都是大明哥原创,内容全面且通俗易懂,回答部分可以直接作为面试回答内容。
- 持续更新:一次购买,永久有效。大明哥会持续更新 3+ 年,累计更新 1000+,宝典会不断迭代更新,保证最新、最全面。
- 覆盖全面:本宝典累计更新 1000+,从 Java 入门到 Java 架构的高频面试题,实现 360° 全覆盖。
- 不止面试:内容包含面试题解析、内容详解、知识扩展,它不仅仅只是一份面试题,更是一套完整的 Java 知识体系。
- 宝典详情:https://www.yuque.com/chenssy/sike-java/xvlo920axlp7sf4k
- 宝典总览:https://www.yuque.com/chenssy/sike-java/yogsehzntzgp4ly1
- 宝典进展:https://www.yuque.com/chenssy/sike-java/en9ned7loo47z5aw
目前 Java 面试宝典累计更新 400+ 道,总字数 42w+。大明哥还在持续更新中,下图是大明哥在 2024-12 月份的更新情况:
想了解详情的小伙伴,扫描下面二维码加大明哥微信【daming091】咨询
同时,大明哥也整理一套目前市面最常见的热点面试题。微信搜[大明哥聊 Java]或扫描下方二维码关注大明哥的原创公众号[大明哥聊 Java] ,回复【面试题】 即可免费领取。