回调与观察者模式区分

server/2024/10/22 11:40:53/

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

观察者设计模式:

  • 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/server/110295.html

相关文章

linux 内核网络分析 -- 分配并初始化socket

分配并初始化socket inet_creat()函数分配了一个sock结构&#xff0c;定义的代码在2.2中&#xff0c;分配工作是通过sk sk_alloc(net, PF_INET, GFP_KERNEL, answer_prot) 来完成的&#xff0c;将anwer_prot作为其prot参数使用&#xff0c;已经设置为tcp_prot &#xff0c; sy…

【C++】智能指针——auto_ptr,unique_ptr,shared_ptr

目录 auto_ptr unique_ptr shared_ptr 并发问题 循环引用问题 个人主页&#xff1a;传送门——>东洛的克莱斯韦克 智能指针的原理&#xff1a;传送门——>智能指针的原理 auto_ptr 使用方法参考官方文档 传送门——>auto_ptr文档 auto_ptr并不是一个优秀的智能…

【Google Play版】bilibili 3.19.2最新国际版(如何鉴别是否官方?)

相信玩 B 站的小伙伴也不少&#xff0c;国内版确实太臃肿了&#xff0c;已经“变质”了。 这是主界面&#xff0c;我没有做任何设置&#xff0c;刚装好就是这样&#xff1a; 摘自 Play 最新的评论&#xff1a; “3.19非常好&#xff0c;解决了我之前两个痛点。一是首页的自动…

使用libbpf-bootstrap框架构建eBPF程序

使用libbpf-bootstrap框架构建eBPF程序 在公众号写了一篇文章&#xff0c;可以参考如上链接。

算法训练营|图论第7天 prim算法 kruskal算法

题目&#xff1a;prim算法 题目链接&#xff1a; 53. 寻宝&#xff08;第七期模拟笔试&#xff09; (kamacoder.com) 代码&#xff1a; #include<bits/stdc.h> #include<unordered_map> #include<unordered_set> using namespace std; int main() {int v…

Redis的内存淘汰策略- allkeys-lru

allkeys-lru 策略简介 在 allkeys-lru 策略下&#xff0c;当 Redis 的内存使用达到设置的上限&#xff08;maxmemory&#xff09;时&#xff0c;它会根据 LRU 算法选择和删除那些最近最少使用的键。LRU 算法会记录每个键的最近访问时间&#xff0c;当内存不足时&#xff0c;Re…

MySQL——事务与存储过程(二)存储过程的创建(1)创建存储过程

在开发过程中&#xff0c;经常会遇到重复使用某一功能的情况&#xff0c;为此&#xff0c;MySQL 引人了存储过程。存储过程就是一条或多条 SQL语句的集合&#xff0c;当对数据库进行一系列复杂操作时&#xff0c;存储过程可以将这些复杂操作封装成一个代码块&#xff0c;以便重…

JavaWeb笔记整理11——Nginx反向代理Tomcat

Nginx反向代理Tomcat服务器的实现原理&#xff1a; Nginx 就像一个中间人&#xff0c;它站在你的客户端&#xff08;比如浏览器&#xff09;和后端服务器&#xff08;比如Tomcat&#xff09;之间。它的主要任务是接收来自客户端的请求&#xff0c;然后将这些请求转发给实际处理…