首页 > 图灵资讯 > java面试题>正文
初级java面试题-什么是观察者模式?
2024-07-23 13:10:26
观察者模式的基本概念
观察者模式主要涉及两个角色:被观察者(也叫主题)和观察者。
- 被观察者(Subject):这是状态发生变化的对象。当它的状态改变时,会通知所有已经订阅(注册)的观察者。
- 观察者(Observer):这是那些需要在被观察者状态改变时做出反应的对象。
工作原理
- 注册观察者:观察者向被观察者注册,以便接收通知。
- 状态变化:被观察者的状态发生变化。
- 通知观察者:被观察者通知所有注册的观察者,通常通过调用观察者的某个方法。
- 更新状态:观察者在接收到通知后,执行相应的操作来更新自己的状态。
一个简单的例子
想象一下,你在学校里是班长(被观察者),班主任(观察者)需要知道班级的最新动态。每当班级有重要事情发生时,你都会通知班主任。
- 注册观察者:班主任告诉你,他需要知道班级的动态。
- 状态变化:班级发生了一件重要的事情,比如说有同学生病了。
- 通知观察者:你立即告诉班主任这个消息。
- 更新状态:班主任在接收到消息后,可能会采取一些行动,比如联系家长或者安排其他同学帮忙。
现实中的应用
在Java中,观察者模式常用于以下场景:
- 图形用户界面(GUI):当用户点击按钮、选择菜单项或者输入文本时,界面上的其他部分需要做出相应的更新。
- 事件驱动编程:比如说网络请求完成、文件系统变化等。
- 数据绑定:当数据模型发生变化时,视图层自动更新。
Java中的实现
在Java中,可以使用java.util.Observable
类和java.util.Observer
接口来实现观察者模式。不过需要注意的是,从Java 9开始,这两个类已经被标记为过时(Deprecated),推荐使用其他方式来实现,比如自定义接口和类。