在软件开发中,Java观察者模式是一种非常经典且实用的观察者设计模式。它属于行为型设计模式,常用于实现对象之间的一对多依赖关系:当一个对象的状态发生变化时,所有依赖于它的对象都会自动收到通知并更新。
无论你是刚接触Java设计模式教程的新手,还是希望巩固基础知识的开发者,本文都将带你一步步理解并实现观察者模式,并了解它在事件驱动编程Java中的实际应用。
想象一下你订阅了一个新闻网站。每当有新新闻发布,你就会立刻收到邮件通知。在这个场景中:
这就是观察者模式的基本思想:一个主题(Subject)维护一个观察者列表,并在状态变化时通知所有观察者。

在 Java 中,有两种常见方式实现观察者模式:
java.util.Observable 和 Observer 接口(已过时,不推荐)下面我们使用自定义接口的方式,从零构建一个完整的观察者模式示例。
public interface Observer { void update(String message);}import java.util.ArrayList;import java.util.List;public interface Subject { void registerObserver(Observer observer); void removeObserver(Observer observer); void notifyObservers();}public class NewsPublisher implements Subject { private List<Observer> observers; private String latestNews; public NewsPublisher() { this.observers = new ArrayList<>(); } @Override public void registerObserver(Observer observer) { observers.add(observer); } @Override public void removeObserver(Observer observer) { observers.remove(observer); } @Override public void notifyObservers() { for (Observer observer : observers) { observer.update(latestNews); } } public void setLatestNews(String news) { this.latestNews = news; // 状态改变,通知所有观察者 notifyObservers(); }}public class NewsReader implements Observer { private String name; public NewsReader(String name) { this.name = name; } @Override public void update(String message) { System.out.println(name + " 收到新闻通知: " + message); }}public class Main { public static void main(String[] args) { NewsPublisher publisher = new NewsPublisher(); NewsReader reader1 = new NewsReader("张三"); NewsReader reader2 = new NewsReader("李四"); publisher.registerObserver(reader1); publisher.registerObserver(reader2); publisher.setLatestNews("今天天气晴朗,适合出游!"); // 输出: // 张三 收到新闻通知: 今天天气晴朗,适合出游! // 李四 收到新闻通知: 今天天气晴朗,适合出游! publisher.removeObserver(reader1); publisher.setLatestNews("股市大涨,投资者信心增强!"); // 输出: // 李四 收到新闻通知: 股市大涨,投资者信心增强! }}优点:
适用场景:
通过本篇Java设计模式教程,你已经掌握了Java观察者模式的核心原理和实现方法。这种观察者设计模式不仅结构清晰,而且在事件驱动编程Java中扮演着重要角色。建议你在实际项目中尝试使用它,比如构建一个简单的聊天室通知系统或用户行为日志监听器。
记住:好的设计模式不是为了炫技,而是为了解决真实问题。观察者模式正是解决“状态同步”和“事件通知”问题的利器!
本文由主机测评网于2025-12-16发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025128493.html