设计模式-行为型模式-观察者模式

观察者模式用于定义对象间的一种一对多的依赖关系,使得当一个对象状态变化时,其所有依赖对象都会收到通知并自动更新

/*** 行为型模式--观察者模式* 观察者模式用于定义对象间的一种一对多的依赖关系,使得当一个对象状态变化时,其所有依赖对象都会收到通知并自动更新*/
public class ObserverMode {// 观察者接口interface Observer {void update();}// 主题接口interface Subject {void registerObserver(Observer observer);void removeObserver(Observer observer);void notifyObservers();}// 具体主题类static class ConcreteSubject implements Subject {private final java.util.List<Observer> observers = new java.util.ArrayList<>();public void registerObserver(Observer observer) {observers.add(observer);}public void removeObserver(Observer observer) {observers.remove(observer);}public void notifyObservers() {for (Observer observer : observers) {observer.update();}}}// 具体观察者类static class ConcreteObserver implements Observer {public void update() {System.out.println("Received message: Observer is notifyObservers");}}// ConcreteSubject是一个具体的主题类,它实现了Subject接口,并包含了一组观察者。// ConcreteObserver是一个具体的观察者类,它实现了Observer接口。// 通过观察者模式,我们可以实现对象间的解耦,当主题状态发生变化时,观察者会收到通知并进行相应的更新// 使用观察者模式public static void main(String[] args) {ConcreteSubject subject = new ConcreteSubject();Observer observer = new ConcreteObserver();subject.registerObserver(observer);subject.notifyObservers();subject.removeObserver(observer);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/829018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++及QT的线程学习

目录 一. 线程学习 二. 学习线程当中&#xff0c;得到的未知。 1. 了解以下MainWindow和main的关系 2. []()匿名函数 有函数体&#xff0c;没有函数名. 3. join和detach都是用来管理线程的生命周期的&#xff0c;它们的区别在于线程结束和资源的回收。 4. operator()() 仿…

4G组网三相四线预付费电表-远程集中抄表

安科瑞薛瑶瑶18701709087/17343930412 DTSY1352 三相预付费电能表分别用于计量额定频率50Hz 的单、三相交流有功电能&#xff0c;具有预付费控制、负载控制、时间控制及 RS485 通信等功能&#xff0c;性能指标符合 GB/T17215.321-2008 标准。是改革传统用电体制&#xff0c…

杰理695的UI模式LED灯控制

UI模式LED灯修改每个模式对应的LED灯闪烁修改在ui_normal_status_deal(u8 *status, u8 *power_status, u8 ui_mg_para)

开源克隆声音的项目-OpenVoice V2

myshell的OpenVoice 出v2版本了 只需要上传一段20秒到5分钟之间的声音&#xff0c;就可以克隆声音。 单人讲话 没有背景噪音 时间在20秒至5分钟之间 本地部署我没有做&#xff0c;我在myshell的官网上测试了一下&#xff0c;可能是上传的音频有杂音&#xff0c;导致不是很清…

设计模式- 迭代器模式(Iterator Pattern)结构|原理|优缺点|场景|示例

迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为设计模式&#xff0c;它提供了一种方法来顺序访问聚合对象&#xff08;容器&#xff09;中的元素&#xff0c;而又不暴露其实现细节。通过使用迭代器&#xff0c;用户可以从不同类型的聚合对象中以统一的方式遍历…

人机交互系统文本分类 text classification环节源码(E-commerce)

我把pre-trained model 下载到了本地 效果如下&#xff08;到时候把代码中的sequence 和labels换成自己的text和分类就行了。&#xff09;&#xff1a; 源码见链接&#xff1a; https://download.csdn.net/download/qqqweiweiqq/89211553

2024年好用又便宜的云手机!哪款性价比高?

随着科技的飞速发展&#xff0c;云计算技术也在不断演进&#xff0c;而云手机作为其创新之一&#xff0c;已经开始在我们的生活中崭露头角。它通过将手机的硬件和软件功能移到云端&#xff0c;让用户能够借助强大的云计算资源完成各种任务。2024年&#xff0c;哪款云手机性价比…

Ubuntu关闭防火墙、关闭selinux、关闭swap

关闭防火墙 打开终端&#xff0c;然后输入如下命令&#xff0c;查看防火墙状态&#xff1a; sudo ufw status 开启防火墙命令如下&#xff1a; sudo ufw enable 关闭防火墙命令如下&#xff1a; sudo ufw disable 关闭selinux setenforce 0 && sed -i s/SELINUXe…

QML中使用正则表达式

我想在TextField控件中使用正则表达式&#xff0c;然后GPT4给出的回答是这样的&#xff1a; TextField {id: versionInputplaceholderText: qsTr("输入版本号")validator: RegExpValidator { regExp: /^[a-zA-Z0-9]*$/ } // 仅允许字母和数字width: 120 // 设置合…

SpringBoot中多数据源灵活切换解决方案

本篇内容介绍了“SpringBoot中如何使用Dynamic Datasource配置多数据源”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 源码地址/文档说明 功能特性: 支持 数据源分组…

软件设计师-重点的创建型设计模式

一、简单工厂&#xff1a; 简单工厂模式属于创建型模式&#xff0c;但不属于23种设计模式之一。 软考中图 二、工厂方法&#xff1a; 意图&#xff1a; 定义一个用于创建对象的接口&#xff0c;让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。 结…

YOLOV5 TensorRT部署 BatchedNMS(engine模型推理)(下)

主要是在王新宇代码的基础上改进,引入对BatchedNMS的解码 文章目录 1. 修改yolov5.cpp2.修改yololayer.h1. 修改yolov5.cpp 首先增加全局变量,名字根据转onnx时修改的节点名字来,查看onnx文件可以看到,顺序不要弄错。 const char *INPUT_NAME = “images”; const char …

DDR3 MIG IP核解决方案

DDR3 MIG IP核解决方案 信号方向描述app_addr [ADDR_WIDTH - 1&#xff1a;0]输入该输入指示当前请求的地址。app_cmd [2&#xff1a;0]输入该输入选择当前请求的命令。app_en输入这是app_addr []&#xff0c;app_cmd [2&#xff1a;0]&#xff0c;app_sz和app_hi_pri输入的高…

Java自带的栈和队列(使用巨方便)

目录 1.Java封装的栈 2.Java自带的队列 2.1 ArrayDeque 2.2 LinkedList 2.3 PriorityQueue 1.Java封装的栈 栈——“后进先出”原则 Stack<T> stack new Stack();/**栈顶添加元素*/ stack.push(T);/**栈顶弹出元素*/ T temp stack.pop();/**查看当前栈顶元素,元素…

FFmpeg常用结构体、关键函数、ffplay.c分析

一、常用结构体&#xff1a; 1、AVFormatContext结构体&#xff1a; AVFormatContext是一个贯穿全局的数据结构&#xff0c;很多函数都要用它作为参数。FFmpeg代码中对这个数据结构的注释是format I/O context&#xff0c;此结构包含了一个视频流的格式内容。其中存有AVIputFor…

抖音小店值得做吗?前期需要多少资金的投入?

大家好&#xff0c;我是电商糖果 这两天有位想做店的朋友&#xff0c;问了糖果一个问题。 他说开个体店是不是需要办理个体户营业执照。 我回答是的。 他又问办执照是不是需要花钱。 我说自己去工商局办理是免费的&#xff0c;找人代办市场上的价格一般在二百左右。 对方…

最大层内元素和

题目链接 最大层内元素和 题目描述 注意点 返回层内元素之和 最大 的那几层&#xff08;可能只有一层&#xff09;的层号&#xff0c;并返回其中 最小 的那个树中的节点数在 [1, 10000]范围内-10^5 < Node.val < 10^5 解答思路 广度优先遍历树&#xff0c;使用队列存…

本地部署和运行大型语言模型(Large Language Models, LLMs)的工具Ollama

文章目录 本地部署和运行大型语言模型&#xff08;Large Language Models, LLMs&#xff09;的工具Ollama背景什么是Ollama主要功能优势 使用场景Ollama LangChain 实现本地运行Llama 3 本地部署和运行大型语言模型&#xff08;Large Language Models, LLMs&#xff09;的工具…

应用内竞价(Bidding)技术为什么一定要结合瀑布流广告分层+混合智能排序技术?

应用内竞价&#xff08;In-App Bidding或Header Bidding&#xff09;即在APP端实现竞价的优势显而易见&#xff0c;接入的所有广告平台按价格实时排序&#xff0c;价高者得&#xff0c;这样使得每次广告请求收益都是最大值&#xff0c;从而实现收益最大化。 竞价机制是买卖双方…

改善员工绩效管理的 8 种最佳方法

企业如何改进绩效管理体系&#xff0c;才能获得最好的结果&#xff1f;请仔细阅读&#xff0c;找出答案… 人力资源部门对组织的成功起着至关重要的作用&#xff0c;组织的员工也是如此。更好的组织管理会带来更高的利润。人力资源部门的工作很大一部分就是规范绩效管理体系&a…