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

回调与观察者模式区分

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

观察者设计模式:

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 机器视觉--光源打光技巧
  • 大数据技术之HBase简介(1)
  • 如何使用JMeter的JSON提取器解析JSON响应
  • 前后端交互的路径怎么来的?后端解决cors问题的一种方法
  • 【Python篇】Python 类和对象:详细讲解(中篇)
  • OpenCV杂项图像变换(1)自适应阈值处理函数adaptiveThreshold()的使用
  • Study Plan For Algorithms - Part18
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • 音频如何低延时回声消除与降噪篇保姆级教程
  • Java算法之希尔排序(Shell Sort)
  • 深入理解Python中的属性(Property)及其用途
  • 代码随想录day1数组/字符串总结
  • java中的Opencv:Opencv简介与开发环境部署
  • win主机整改建议
  • 深度学习100问38:什么是阿达玛乘积
  • 【知识碎片】第三方登录弹窗效果
  • Angular6错误 Service: No provider for Renderer2
  • cookie和session
  • css系列之关于字体的事
  • Django 博客开发教程 16 - 统计文章阅读量
  • FastReport在线报表设计器工作原理
  • HTTP--网络协议分层,http历史(二)
  • JAVA_NIO系列——Channel和Buffer详解
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript设计模式与开发实践系列之策略模式
  • Js基础知识(一) - 变量
  • js中的正则表达式入门
  • Node 版本管理
  • React-生命周期杂记
  • use Google search engine
  • Vim Clutch | 面向脚踏板编程……
  • 机器人定位导航技术 激光SLAM与视觉SLAM谁更胜一筹?
  • 类orAPI - 收藏集 - 掘金
  • 配置 PM2 实现代码自动发布
  • 使用agvtool更改app version/build
  • 小李飞刀:SQL题目刷起来!
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • 译自由幺半群
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • ​浅谈 Linux 中的 core dump 分析方法
  • #Js篇:单线程模式同步任务异步任务任务队列事件循环setTimeout() setInterval()
  • #Linux(Source Insight安装及工程建立)
  • #NOIP 2014#day.2 T1 无限网络发射器选址
  • #每天一道面试题# 什么是MySQL的回表查询
  • (20)目标检测算法之YOLOv5计算预选框、详解anchor计算
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (C++20) consteval立即函数
  • (LeetCode 49)Anagrams
  • (三)centos7案例实战—vmware虚拟机硬盘挂载与卸载
  • (四)Android布局类型(线性布局LinearLayout)
  • (算法)N皇后问题
  • (五)大数据实战——使用模板虚拟机实现hadoop集群虚拟机克隆及网络相关配置
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。