当前位置: 首页 > 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");}
}

http://www.lryc.cn/news/447315.html

相关文章:

  • 耦合微带线单元的网络参量和等效电路公式推导
  • elasticsearch的Ingest Attachment插件的使用总结
  • SemiDrive E3 MCAL 开发系列(4) – Gpt 模块的使用
  • 前端导出页面PDF
  • Jenkins的安装
  • 初学51单片机之I2C总线与E2PROM
  • C语言数组探秘:数据操控的艺术【下】
  • Jmeter关联,断言,参数化
  • 嵌入式单片机底层原理详解
  • 重修设计模式-行为型-责任链模式
  • Vercel部署/前端部署
  • 常见的css预处理器
  • mysql—半同步模式
  • You are not allowed to push code to this project
  • Java刷题:最小k个数
  • Redis实战--Redis应用过程中出现的热门问题及其解决方案
  • 实时数字人DH_live使用案例
  • 线上环境排故思路与方法GC优化策略
  • 硬件设计很简单?合宙低功耗4G模组Air780E—开机启动及外围电路设计
  • 初试AngularJS前端框架
  • 【学习笔记】手写 Tomcat 六
  • 打靶记录18——narak
  • LabVIEW编程能力如何能突飞猛进
  • 代码随想录算法训练营第四四天| 1143.最长公共子序列 1035.不相交的线 53. 最大子序和 392.判断子序列
  • 2024.9.26 作业 +思维导图
  • WSL进阶体验:gnome-terminal启动指南与中文显示问题一网打尽
  • recoil和redux之间的选择
  • 无人机的作战指挥中心-地面站!
  • Vue 23进阶面试题:(第八天)
  • Acwing 最小生成树