当前位置: 首页 > 图灵资讯 > java面试题> 初级java面试题-什么是观察者模式?

初级java面试题-什么是观察者模式?

来源:图灵教育
时间:2024-07-23 13:10:26

观察者模式的基本概念

观察者模式主要涉及两个角色:被观察者(也叫主题)和观察者

  • 被观察者(Subject):这是状态发生变化的对象。当它的状态改变时,会通知所有已经订阅(注册)的观察者。
  • 观察者(Observer):这是那些需要在被观察者状态改变时做出反应的对象。

工作原理

  1. 注册观察者:观察者向被观察者注册,以便接收通知。
  2. 状态变化:被观察者的状态发生变化。
  3. 通知观察者:被观察者通知所有注册的观察者,通常通过调用观察者的某个方法。
  4. 更新状态:观察者在接收到通知后,执行相应的操作来更新自己的状态。

一个简单的例子

想象一下,你在学校里是班长(被观察者),班主任(观察者)需要知道班级的最新动态。每当班级有重要事情发生时,你都会通知班主任。

  1. 注册观察者:班主任告诉你,他需要知道班级的动态。
  2. 状态变化:班级发生了一件重要的事情,比如说有同学生病了。
  3. 通知观察者:你立即告诉班主任这个消息。
  4. 更新状态:班主任在接收到消息后,可能会采取一些行动,比如联系家长或者安排其他同学帮忙。

现实中的应用

在Java中,观察者模式常用于以下场景:

  • 图形用户界面(GUI):当用户点击按钮、选择菜单项或者输入文本时,界面上的其他部分需要做出相应的更新。
  • 事件驱动编程:比如说网络请求完成、文件系统变化等。
  • 数据绑定:当数据模型发生变化时,视图层自动更新。

Java中的实现

在Java中,可以使用java.util.Observable类和java.util.Observer接口来实现观察者模式。不过需要注意的是,从Java 9开始,这两个类已经被标记为过时(Deprecated),推荐使用其他方式来实现,比如自定义接口和类。