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

JAVA观察者模式demo【设计模式系列】

有时候我们可能触发一个事件后,需要通知多个目标,这些目标有自己的处理逻辑,一个比较好理解的例子:我们的游戏角色四周都是小怪,我们往前走了一步,可能进入了一些小怪的攻击范围,这时候就需要通知四周小怪进行攻击行为,小怪们的攻击方式有不同,而没有进入攻击范围的小怪则无动于衷,就可以使用观察者模式。上代码~

1.创建一个观察者服务接口

public interface ObserveService {void handle();
}

2.创建3个观察者,实现【ObserveService】接口

public class ObserveServiceImpl1 implements ObserveService{@Overridepublic void handle() {System.out.println("观察者处理逻辑1");}
}

3.创建被观察者

public class ObserveFactory {private List<ObserveService> observeServiceList = new ArrayList<>();/*** 添加观察者* @param observeService*/public void addObserveService(ObserveService observeService){observeServiceList.add(observeService);}/*** 通知观察者*/public void notifyObserve() {for (ObserveService observeService : observeServiceList) {observeService.handle();}}
}

4.根据业务,把观察者添加进集合,再根据业务通知观察者们

@Testpublic void observeTest() {ObserveServiceImpl1 observeServiceImpl1 = new ObserveServiceImpl1();ObserveServiceImpl2 observeServiceImpl2 = new ObserveServiceImpl2();ObserveServiceImpl3 observeServiceImpl3 = new ObserveServiceImpl3();//根据业务逻辑,把观察者添加到集合中ObserveFactory observeFactory = new ObserveFactory();observeFactory.addObserveService(observeServiceImpl1);observeFactory.addObserveService(observeServiceImpl2);observeFactory.addObserveService(observeServiceImpl3);//根据业务逻辑,通知观察者们observeFactory.notifyObserve();}

5.查看执行结果

在这里插入图片描述

以上是我对观察者模式的理解,有不对的地方,欢迎留意指导!

http://www.xdnf.cn/news/1092583.html

相关文章:

  • 基于YOLOv11的CF-YOLO,如何突破无人机小目标检测?
  • 【WEB】Polar靶场 21-25题 详细笔记
  • Prometheus+Grafana+node_exporter监控linux服务器资源的方案
  • 分库分表之实战-sharding-JDBC绑定表配置实战
  • CTFHub————Web[信息泄露(目录遍历、PHPINFO)]
  • 1.4 洛谷入门一题单全解
  • Explain关键字
  • Markdown 语法规则
  • 什么是 AMR 格式?简鹿音频转换器轻松批量转换 AMR 为 MP3
  • PHP语法高级篇(一):日期时间处理和包含文件
  • LLaMA 学习笔记
  • 装配式建筑4.0:当房子像汽车一样被“智造”
  • 数据结构——深度优先搜索与广度优先搜索的实现
  • 人机协同的关键枢纽:软件工程3.0中对象模型与模型驱动的融合路径
  • VSCode配置Cline插件调用MCP服务实现任务自动化
  • langchain从入门到精通(四十一)——基于ReACT架构的Agent智能体设计与实现
  • 陶哲轩:数学界的莫扎特与跨界探索者
  • Lingo软件学习(一)好学爱学
  • Grafana容器化部署
  • 工业通讯网关在电子制造中的核心作用——从DeviceNet到Modbus TCP的智能转换
  • Vue响应式原理三:响应式依赖收集-类
  • 【Python】FastApi
  • 腾讯云COS,阿里云OSS对象存储服务-删除操作的响应码204
  • S7-1500——(一)西门子PLC编程从入门到精通4、SCL间接寻址
  • 项目进度受制于资源分配,如何动态调配资源
  • LeetCode 138题解 | 随机链表的复制
  • 5202年安装TensorFlow纪实
  • 向量空间 线性代数
  • 解锁HTML5页面生命周期API:前端开发的新视角
  • 超越公有云:在裸金属服务器上构建低成本、高性能的静态资源服务