回调与观察者模式区分

embedded/2024/10/22 14:38:11/

回调是观察者的具体一个业务实现,其他地方也有回调实现。

观察者设计模式:

  • 1、主题(提供注册、解绑观察者、通知观察者)
  • 2、观察者(业务方继承3,每一个观察者业务的逻辑不一样)
  • 3、观察者接口(规范了要做的事情)
代码逻辑```bash
// 观察者接口
interface Observer {void update(String message);
}// 主题类
class Subject {private List<Observer> observers = new ArrayList<>();// 注册观察者public void subscribe(Observer observer) {observers.add(observer);}// 注销观察者public void unsubscribe(Observer observer) {observers.remove(observer);}// 通知所有观察者public void notifyObservers(String message) {for (Observer observer : observers) {observer.update(message);}}
}// 具体观察者
class ConcreteObserver implements Observer {@Overridepublic void update(String message) {System.out.println("Received message: " + message);}
}// 客户端代码
public class ObserverPatternDemo {public static void main(String[] args) {Subject subject = new Subject();Observer observer1 = new ConcreteObserver();Observer observer2 = new ConcreteObserver();subject.subscribe(observer1);subject.subscribe(observer2);// 当主题状态变化时,通知所有观察者subject.notifyObservers("State has changed!");}
}
```

http://www.ppmy.cn/embedded/104057.html

相关文章

关于vue2运行时filemanager-webpack-plugin报错isFile is undefind

当我们在运行时报此错误时&#xff0c;在vue.config.js里找一下filemanager-webpack-plugin的配置路径。 new FileManagerPlugin({onEnd: {delete: [./dist.zip],archive: [{ source: ./dist, destination: ./dist.zip }]}}) 在对应的路径下建一个dist文件夹

10、ollama启动LLama_Factory微调大模型(llama.cpp)

在前面章节中介绍了如何使用LLama_Factory微调大模型&#xff0c;并将微调后的模型文件合并导出&#xff0c;本节我们我们看下如何使用ollama进行调用。 1、llama.cpp LLama_Factory训练好的模型&#xff0c;ollama不能直接使用&#xff0c;需要转换一下格式&#xff0c;我们…

智能儿童对讲机语音交互,乐鑫ESP-RTC音视频通信,ESP32无线语音方案

儿童对讲机一种专为孩子们设计的通讯设备&#xff0c;可以让父母与孩子之间进行双向通讯&#xff0c;增强亲子关系&#xff0c;增强孩子的可玩性。 儿童对讲机近几年发展的比较快&#xff0c;通过无线WiFi及蓝牙通信技术&#xff0c;可以实现远程控制和语音交互功能&#xff0…

如何选择合适的JDK:功能、性能与适用场景的全面解析

如何选择合适的JDK&#xff1a;功能、性能与适用场景的全面解析 前言 在 Java 开发领域&#xff0c;开发者有众多的 JDK 选择&#xff0c;如 OpenJDK、GraalVM、Oracle JDK、Dragonwell、Kona、Bisheng、Corretto、Zulu、Liberica、SapMachine、Semeru、Temurin、Mandrel等。 …

英特尔 Arrow Lake Halo 再现,猛堆料对标Strix Halo/苹果M系列

原文转载修改自&#xff1a; Arrow Lake Halo暴力堆料&#xff0c;对标Strix Halo&#xff0c;M系列 根据最近的消息&#xff0c;蓝厂准备于来年1月推出笔记本Arrow Lake-H处理器。虽然在传闻中Arrow Lake-H又是Arc Alchemist架构革新&#xff0c;又是6P8E&#xff0c;但基于…

鸿蒙界面开发(五):相对布局

相对布局RelativeContainer 相对布局的容器&#xff0c;支持容器内部的子元素设置相对位置关系&#xff0c;适用于界面复杂场景的情况&#xff0c;对多个子组件进行对齐和排列。子元素支持指定兄弟或父元素作为锚点&#xff0c;基于锚点做相对位置布局。 锚点&#xff1a;通过…

Java:有效括号字符串验证器

Java实现的有效括号字符串验证器 引言 在编程中&#xff0c;经常需要验证一组字符串中的括号是否正确配对。例如&#xff0c;检查一段代码或表达式中的圆括号、方括号和花括号是否成对出现。这类问题不仅在编程语言解析器中非常重要&#xff0c;也是许多软件开发场景中的基础…

Linux下C++编程使用动态链接库

在《Linux下C编程使用动态链接库》一文中已了解到了C语言里如何使用共享库SO了&#xff0c;但在C里可全是类&#xff0c;该如何实现呢&#xff1f;C语言中的操作只能导出全局函数&#xff0c;并不能导出类的方法&#xff0c;故而需要设计相关的全局函数来封装一层。这里用到了“…