观察者模式(发布-订阅模式)

ops/2024/9/24 19:11:41/

用途:可用于拦截过滤器

消息推送接口:

java">public interface Subject {//添加订阅者void addObserver(Observer observer);//移除订阅者void removeObserver(Observer observer);//通知订阅者void notifyObservers(String message);
}

消息推送实现着:

java">​
public class ConcreteSubject implements Subject{//订阅者集合ArrayList<Observer> observers = new ArrayList<>();@Overridepublic void addObserver(Observer observer) {observers.add(observer);}@Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}@Overridepublic void notifyObservers(String message) {for (Observer observer : observers) {observer.update(message);}}
}​

订阅者接口

java">public interface Observer {void update(String message);}

订阅者1

java">public class ObserverOne implements Observer{@Overridepublic void update(String message) {System.out.println("ObserverOne"+message);}
}

订阅者2

java">public class ObserverTwo implements Observer{@Overridepublic void update(String message) {System.out.println("ObserverTwo"+message);}
}

测试:

java">public class Tes {public static void main(String[] args) {ConcreteSubject concreteSubject = new ConcreteSubject();concreteSubject.addObserver(new ObserverOne());concreteSubject.addObserver(new ObserverTwo());concreteSubject.notifyObservers("hello world");}
}


http://www.ppmy.cn/ops/115410.html

相关文章

MySQL中的函数简单总结,以及TCL语句的简单讲解

文章目录 一、函数1、ifnull2、if3、case4、exists 存在5、字符串函数&#xff08;重点&#xff09;6、数学函数7、日期函数 二、TCL语句1、创建用户2、赋予权限3、修改mysql允许远程登录 一、函数 1、ifnull 当前⾯的值是null的时候&#xff0c;使⽤后⾯的默认值 ifnull(字段…

docker多阶段镜像制作,比如nginx镜像,编译+制作

镜像制作&#xff0c; nginx的源码包 把nginx源码拷贝到容器内 编译要用到gcc make , 以及扩展工具 pcre openssl # "pcre" perl compatibal regulaer expression 刚开始&#xff0c;可以两个终端&#xff0c; 一个手工操作(编译安装、拷贝、环境变量等)&#xf…

阿里巴巴搜索API返回值:电商市场竞争的新武器含

阿里巴巴搜索API返回值在电商市场竞争中扮演着至关重要的角色&#xff0c;它为企业提供了深入了解市场、分析竞争对手的宝贵资源。以下是对阿里巴巴搜索API返回值及其在电商市场竞争中应用的详细解析&#xff0c;并附上示例代码。 一、阿里巴巴搜索API返回值概述 阿里巴巴搜索…

YOLOv10独家改进:红外场景严重遮挡和重叠目标解决方案 | 一种新的自适应算法轻量级通道分割和变换(ALSS)模块,自适应特征提取优化策略

💡💡💡本文解决什么问题:红外检测场景存在严重遮挡和重叠目标时的局限性的问题点。 💡💡💡提出了一种新的自适应算法轻量级通道分割和变换(ALSS)模块。该模块采用自适应信道分裂策略优化特征提取,并集成信道变换机制增强信道间的信息交换。这改善了模糊特征的提…

【计算机网络篇】数据链路层 功能|组帧|流量控制与可靠传输机制

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 系列文章目录 【计算机网络篇】计算机网络概述 【计算机网络篇…

C++ prime plus-3-编程练习

#include <iostream>int main() {// 定义转换因子常量const int INCHES_PER_FOOT 12;// 声明变量用于存储用户输入的身高int height_inches;// 提示用户输入身高&#xff08;单位为英寸&#xff09;std::cout << "请输入您的身高&#xff08;单位为英寸&…

【Unity与数据库01】开发者如何选择数据库

在选择数据库时&#xff0c;需要考虑多个因素&#xff0c;包括项目的规模、性能需求、开发团队的熟悉程度、维护成本等。以下是对 MySQL、Oracle 和 SQLite 的简要比较&#xff0c;以帮助你决定哪个更适合你的 Unity 游戏项目。 1. SQLite 优点&#xff1a; 轻量级&#xff1…

如何进行CAESES许可使用分析

随着工程仿真软件在企业中的广泛应用&#xff0c;如何有效进行CAESES许可使用分析成为了企业提升资源利用率、优化运营成本的关键环节。本文将为您介绍如何进行CAESES许可使用分析&#xff0c;帮助您更好地管理和利用软件资源。 一、明确分析目的和指标 在进行CAESES许可使用…