观察者模式示例代码

news/2025/2/22 4:32:52

观察者模式定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖它的对象都会得到通知并自动更新。常见于消息队列(MQ)、Zookeeper 事件通知等场景。

java">import java.util.ArrayList;
import java.util.List;

// 主题接口
interface Subject {
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObservers();
}

// 具体主题类
class NewsAgency implements Subject {
    private List<Observer> observers = new ArrayList<>();
    private String news;

    @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(news);
        }
    }

    public void setNews(String news) {
        this.news = news;
        notifyObservers();
    }
}

// 观察者接口
interface Observer {
    void update(String news);
}

// 具体观察者类
class NewsChannel implements Observer {
    private String news;

    @Override
    public void update(String news) {
        this.news = news;
        System.out.println("Received news: " + news);
    }
}

http://www.niftyadmin.cn/n/5861590.html

相关文章

换服务器需要做的工作(记录一下)

1.Nginx开启OCSP 加快Let’s Encrypt免费证书 HTTPS网站访问速度 https://blog.csdn.net/wx23986/article/details/141722669 2.添加伪静态规则 location / {rewrite ^([^\.]*)/topic-(.)\.html$ $1/portal.php?modtopic&topic$2 last;rewrite ^([^\.]*)/article-([0-9…

Moonshot AI 新突破:MoBA 为大语言模型长文本处理提效论文速读

前言 在自然语言处理领域&#xff0c;随着大语言模型&#xff08;LLMs&#xff09;不断拓展其阅读、理解和生成文本的能力&#xff0c;如何高效处理长文本成为一项关键挑战。近日&#xff0c;Moonshot AI Research 联合清华大学、浙江大学的研究人员提出了一种创新方法 —— 混…

【Kafka系列】Kafka 消息传递保障机制

Kafka 消息传递保障机制 在现代分布式系统中&#xff0c;消息队列扮演着至关重要的角色。Kafka 作为一款高性能、高吞吐量的消息队列系统&#xff0c;提供了多种消息传递保障机制来满足不同的业务需求。本文将详细介绍 Kafka 的三种主要消息传递保障机制&#xff1a;最多一次&a…

【开源商城系统是否能直接拿去售卖】

开源商城系统是否能直接拿去售卖&#xff0c;需要根据具体的开源协议和相关法律法规来判断&#xff0c;以下是具体分析&#xff1a; 遵循开源协议的情况 GPL协议&#xff1a;如果开源商城系统遵循GNU通用公共许可证&#xff08;GPL&#xff09;&#xff0c;这种协议属于强拷贝…

PDF文档管理系统V2.0

在<PDF文档管理系统V1.0>的基础上新增了&#xff08;图片文档识别&#xff09;、&#xff08;文档翻译&#xff09;、&#xff08;阅读计划管理的功能&#xff09;&#xff0c;以及其他的小功能完善。由于此版本需要安装数据库&#xff0c;所以不再提供免费下载链接&…

星途汽车掉队?2024销量增速回落,“星纪元”序列后劲不足

近日&#xff0c;奇瑞集团旗下的星途汽车召开了2025商务年会&#xff0c;勾勒了“科技新豪华三步走”的未来规划&#xff0c;宣布将锚定“3大目标、5大超越、3大满意”开启加速奔跑模式。 “技术奇瑞、品质奇瑞、国际化奇瑞,最终都要汇聚成星途星纪元品牌的向上”&#xff0c;…

前端web安全

一、黑盒扫描和白盒扫描 白盒扫描和黑盒扫描都是针对网络安全和应用程序安全的常用测试方法。 1、白盒扫描指的是测试人员具有关于系统内部结构和代码的全部或部分信息&#xff0c;是基于源代码的安全检测方法&#xff0c;它可以对源代码进行深度分析&#xff0c;从而发现潜在…

EasyPoi系列之通用导入接口设计

EasyPoi系列之通用导入接口设计 1 背景2 分析及设计2.1 标准导入交互分析2.2 设计2.2.1 导入模板生成接口2.2.2 数据导入接口 3、代码实现3.1 人员实体-PersonEntity3.2 定义数据保存通用接口-ExcelImporter3.3 人员数据保存实现- PersonService3.4 建立业务与实体及保存实现类…