当前位置: 首页 > news >正文

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

用途:

(1)可用于拦截过滤器

(2)订单创建成功后的一些后续逻辑(消息提醒,订单打印,物品打包等)

(3)需要由统一调度中心调度的一系列任务等

消息推送接口:

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

消息推送实现着:

​
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);}}
}​

订阅者接口

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

订阅者1

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

订阅者2

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

测试:

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");}
}

相关文章:

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

用途&#xff1a; &#xff08;1&#xff09;可用于拦截过滤器 &#xff08;2&#xff09;订单创建成功后的一些后续逻辑&#xff08;消息提醒&#xff0c;订单打印&#xff0c;物品打包等&#xff09; &#xff08;3&#xff09;需要由统一调度中心调度的一系列任务等 消息…...

耦合微带线单元的网络参量和等效电路公式推导

文档下载链接&#xff1a;耦合微带线单元的网络参量和等效电路资源-CSDN文库https://download.csdn.net/download/lu2289504634/89583027笔者水平有限&#xff0c;错误之处欢迎留言&#xff01; 一、耦合微带线奇偶模详细推导过程 二、2,4端口开路 三、2端口短路、3端口开路 四…...

elasticsearch的Ingest Attachment插件的使用总结

安装 Ingest Attachment 插件 确保 Elasticsearch 已安装&#xff1a; 首先&#xff0c;请确保你已经安装并运行了 Elasticsearch。可以通过访问 http://localhost:9200 来检查是否正常运行。 安装插件&#xff1a; 使用以下命令在 Elasticsearch 中安装 Ingest Attachment 插…...

SemiDrive E3 MCAL 开发系列(4) – Gpt 模块的使用

一、 概述 本文将会介绍SemiDrive E3 MCAL GPT模块的基本配置&#xff0c;并且会结合实际操作的介绍&#xff0c;帮助新手快速了解并掌握这个模块的使用&#xff0c;文中的 MCAL 是基于 PTG3.0 的版本&#xff0c;开发板是官方的 E3640 网关板。 二、 Gpt 模块的主要配置 …...

前端导出页面PDF

import html2canvas from html2canvas import { jsPDF } from jspdf import { Loading } from element-ui let downloadLoadingInstance// 导出页面为PDF格式---使用插件html2canvas和jspdf插件 export function exportPDF(fileName, node) {downloadLoadingInstance Loading.…...

Jenkins的安装

1.简介 官网&#xff1a;https://www.jenkins.io 中文文档&#xff1a;Jenkins Jenkins 是一个开源的持续集成&#xff08;CI&#xff09;工具&#xff0c;用于自动化构建、测试和部署软件项目。它提供了一个易于使用和可扩展的平台&#xff0c;帮助团队更高效地开发和交付软…...

初学51单片机之I2C总线与E2PROM

首先先推荐B站的I2C相关的视频I2C入门第一节-I2C的基本工作原理_哔哩哔哩_bilibili 看完视频估计就大概知道怎么操作I2C了&#xff0c;他的LCD1602讲的也很不错&#xff0c;把数据建立tsp和数据保持thd&#xff0c;比喻成拍照时候的摆pose和按快门两个过程&#xff0c;感觉还是…...

C语言数组探秘:数据操控的艺术【下】

承接上篇&#xff0c;我们继续讲数组的内容。 八.二维数组的使用 当我们掌握了二维数组的创建和初始化&#xff0c;那我们怎么使用二维数组呢&#xff1f;其实二维数组访问也是使用下标的形式的&#xff0c;二维数组是有行和列的&#xff0c;只要锁定了行和列就能唯一锁定数组中…...

Jmeter关联,断言,参数化

目录 一、关联 边界提取器 JSON提取器 正则表达式提取器 跨线程关联 二、断言 响应断言 JSON断言 断言持续时间 三、参数化 用户参数 csv data setconfig csvread函数 一、关联 常用的关联有三种 1.边界提取器 2.JSON提取器 3.正则表达式提取器 接下来就详细讲述…...

嵌入式单片机底层原理详解

前言 此笔记面向有C语言基础、学习过数字电路、对单片机有一定了解且尚在学习阶段的群体编写,笔记中会介绍单片机的结构、工作原理,以及一些C语言编程技巧,对于还停留在复制模板、copy代码阶段的读者会有比较大的帮助,待学习完成后可以独立完成几乎所有单片机的驱动开发。 …...

重修设计模式-行为型-责任链模式

重修设计模式-行为型-责任链模式 将请求的发送和接收解耦&#xff0c;让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链&#xff0c;并沿着这条链传递这个请求&#xff0c;直到链上的某个接收对象能够处理它为止。 责任链模式&#xff08;Chain of Responsibilit…...

Vercel部署/前端部署

Vercel 部署 今天要讲的是如何对别人向自己的开源仓库提的PR进行自动代码审核 1. 注册并登录Vercel 访问 Vercel官网点击右上角的"Sign Up"选择使用GitHub、GitLab、Bitbucket或邮箱注册完成注册流程并登录 2. 连接代码仓库 在Vercel仪表板,点击"New Proje…...

常见的css预处理器

CSS预处理器是一种扩展了CSS功能的脚本语言&#xff0c;它允许开发者以编程的方式编写更加干净、结构化的CSS代码。通过引入变量、嵌套规则、混合&#xff08;Mixins&#xff09;、函数等高级特性&#xff0c;CSS预处理器使得CSS代码的编写更加灵活、高效&#xff0c;同时也提高…...

mysql—半同步模式

mysql的并行复制 在172.25.254.20(slave)主机上 默认情况下slave中使用的是sql单线程回放 在master中时多用户读写&#xff0c;如果使用sql单线程回放那么会造成组从延迟严重 开启MySQL的多线程回放可以解决上述问题 mysql> show processlist; 在配置文件中进行编辑 [root…...

You are not allowed to push code to this project

原因1 用户权限不够。 具体查看用户权限路径&#xff1a; 原因2 vscode之前都能提交代码&#xff0c;但是突然就提交不上了。 表现为:前端代码能拉取&#xff0c;但是不能提交。使用idea进行前端代码的提交&#xff0c;完全没问题。 解决方案&#xff1a;修改TortoiseG…...

Java刷题:最小k个数

目录 题目描述&#xff1a; 思路&#xff1a; 具体实现 整体建立一个大小为N的小根堆 通过大根堆实现 完整代码 力扣链接&#xff1a;面试题 17.14. 最小K个数 - 力扣&#xff08;LeetCode&#xff09; 题目描述&#xff1a; 设计一个算法&#xff0c;找出数组中最小的…...

Redis实战--Redis应用过程中出现的热门问题及其解决方案

Redis作为一种高性能的key-value数据库&#xff0c;广泛应用于缓存、消息队列、排行榜等场景。然而&#xff0c;在实际应用中&#xff0c;随着业务规模的不断扩大和访问量的持续增长&#xff0c;缓存系统也面临着诸多挑战&#xff0c;其中最为典型的便是缓存穿透、缓存击穿和缓…...

实时数字人DH_live使用案例

参看: https://github.com/kleinlee/DH_live ubuntu 测试 apt install ffmpeg 下载安装: git clone https://github.com/kleinlee/DH_live.git cd DH_liveconda create -n dh_live python=3.12 conda activate dh_live pip install -r requirements.txt pip install torch -…...

线上环境排故思路与方法GC优化策略

前言 这是针对于我之前[博客]的一次整理&#xff0c;因为公司需要一些技术文档的定期整理与分享&#xff0c;我就整理了一下。(https://blog.csdn.net/TT_4419/article/details/141997617?spm1001.2014.3001.5501) 其实&#xff0c;nginx配置 服务故障转移与自动恢复也是可以…...

硬件设计很简单?合宙低功耗4G模组Air780E—开机启动及外围电路设计

Air780E是合宙低功耗4G-Cat.1模组经典型号之一&#xff0c;上期我们解答了大家关心的系列问题&#xff0c;并讲解了选型的注意要点。 有朋友问&#xff1a;能不能讲些硬件设计相关的内容&#xff1f; 模组的上电开机&#xff0c;是硬件设计调试的第一步。 本期特别分享——Ai…...

程序员的“黄金5年”:如何快速成为技术骨干

一、认知黄金5年&#xff1a;测试工程师的职业分水岭在软件行业&#xff0c;“黄金5年”是从业者职业发展的关键期&#xff0c;对于软件测试工程师而言更是如此。这5年不仅是技术能力从量变到质变的积累期&#xff0c;更是职业方向从模糊到清晰的定型期。据行业数据显示&#x…...

Claude Code提示词入门:CLAUDE.md编写完全指南

目录Claude Code提示词入门&#xff1a;CLAUDE.md编写完全指南 &#x1f3af;&#x1f4cc; 目录1. 什么是CLAUDE.md2. 为什么CLAUDE.md这么重要2.1 没有CLAUDE.md会怎样&#xff1f;2.2 有了CLAUDE.md会怎样&#xff1f;2.3 核心价值3. CLAUDE.md的加载机制3.1 加载优先级3.2 …...

别让电流倒灌毁了你的MCU!手把手教你用肖特基二极管和MOS管搞定电平转换电路

嵌入式系统电平转换电路设计实战&#xff1a;阻断电流倒灌的5种硬件方案 当3.3V单片机需要驱动5V传感器时&#xff0c;或者5V逻辑器件要与1.8V处理器通信时&#xff0c;电平转换电路就成了系统稳定的关键屏障。去年我在工业控制器项目中就曾遇到一个典型问题&#xff1a;当5V外…...

如何快速掌握智能游戏伴侣:3步上手的完整实战指南

如何快速掌握智能游戏伴侣&#xff1a;3步上手的完整实战指南 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power &#x1f680;. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 还在为英雄联盟中的繁琐操作而烦…...

从像素到诗歌:多模态AI的创意实践与工程实现

1. 项目概述&#xff1a;当像素点遇上AI诗人最近在GitHub上看到一个挺有意思的项目&#xff0c;叫smouj/pixel-poet-skill。光看名字&#xff0c;一股子赛博朋克混搭文艺青年的气息就扑面而来了。Pixel是像素&#xff0c;Poet是诗人&#xff0c;Skill是技能&#xff0c;组合起来…...

如何在5分钟内免费创建4K虚拟显示器:ParsecVDisplay终极指南

如何在5分钟内免费创建4K虚拟显示器&#xff1a;ParsecVDisplay终极指南 【免费下载链接】parsec-vdd ✨ Perfect virtual display for game streaming 项目地址: https://gitcode.com/gh_mirrors/pa/parsec-vdd 想要在Windows电脑上快速扩展工作空间&#xff0c;享受4K…...

卡片刷新三板斧:定时、定点、主动请求——搞清楚才不会乱

文章目录先搞明白谁在控制刷新方式一&#xff1a;定时刷新&#xff08;updateDuration&#xff09;方式二&#xff1a;定点刷新&#xff08;scheduledUpdateTime&#xff09;方式三&#xff1a;主动请求刷新&#xff08;formHost.requestForm&#xff09;三种方式对比卡片 UI 接…...

【法学研究效率革命】:NotebookLM如何将文献综述时间压缩73%?(20年法律AI实践者亲测)

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;NotebookLM法学研究辅助 NotebookLM 是 Google 推出的基于用户自有文档构建的 AI 助手&#xff0c;其核心能力在于对上传文本进行深度语义理解与上下文感知问答。在法学研究场景中&#xff0c;它可高效处理判…...

给单片机新手的福利:拆解一个经典的篮球计分器项目,附Keil C代码逐行分析

51单片机篮球计分器项目深度解析&#xff1a;从状态机设计到数码管驱动实战 当你第一次拿到一个完整的单片机项目源码时&#xff0c;是否曾被那些看似复杂的函数调用和中断处理搞得一头雾水&#xff1f;本文将带你深入剖析一个经典的篮球计分器项目&#xff0c;不仅理解每行代…...

基于MCP协议构建AI支付网关:连接Clawd与智能体的实践指南

1. 项目概述&#xff1a;一个连接Clawd与MCP的支付网关 最近在折腾一个很有意思的开源项目&#xff0c;叫 clawdpay-mcp 。这个项目在GitHub上由 Rishab87 维护&#xff0c;乍一看名字有点拗口&#xff0c;但拆解一下就能明白它的核心价值&#xff1a; clawdpay 和 M…...