java23种设计模式-策略模式

server/2025/3/1 4:58:32/

策略模式(Strategy Pattern)学习笔记


编程相关书籍分享:https://blog.csdn.net/weixin_47763579/article/details/145855793
DeepSeek使用技巧pdf资料分享:https://blog.csdn.net/weixin_47763579/article/details/145884039


🌟 模式定义

策略模式是一种行为型设计模式,定义一系列算法,将每个算法封装起来,并使它们可以互相替换。该模式让算法的变化独立于使用它的客户端。

🎯 适用场景

  • 需要动态切换算法或策略的场景
  • 消除大量条件判断语句(替代复杂的if-else/switch-case)
  • 存在多种相似算法,仅在具体行为有差异时
  • 需要隔离算法实现与使用逻辑时

✅ 核心优点

  • 符合开闭原则(新增策略无需修改已有代码)
  • 避免多重条件判断语句
  • 算法可以自由切换和复用
  • 实现类与客户端解耦

⚠️ 潜在缺点

  • 策略类数量可能膨胀(可通过享元模式优化)
  • 客户端需要了解所有策略的区别
  • 增加对象数量(每个策略都是独立对象)

📐 模式结构


http://www.ppmy.cn/server/171468.html

相关文章

echarts 环形图 指定区域从右侧中心点展开

<!DOCTYPE html> <html lang"en"> <head> <meta charset"UTF-8"> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <title>ECharts 环形图不合理区域展示<…

IP-----动态路由OSPF

这只是IP的其中一块内容&#xff0c;IP还有更多内容可以查看IP专栏&#xff0c;前一章内容为GRE和MGRE &#xff0c;可通过以下路径查看IP-------GRE和MGRE-CSDN博客,欢迎指正 注意&#xff01;&#xff01;&#xff01;本部分内容较多所以分成了两部分在下一章 5.动态路由OS…

如何免费使用稳定的deepseek

0、背景&#xff1a; 在AI辅助工作中&#xff0c;除了使用cursor做编程外&#xff0c;使用deepseek R1进行问题分析、数据分析、代码分析效果非常好。现在我经常会去拿行业信息、遇到的问题等去咨询R1&#xff0c;也给了自己不少启示。但是由于官网稳定性很差&#xff0c;很多…

Cuppa CMS v1.0 任意文件读取(CVE-2022-25401)

漏洞简介&#xff1a; Cuppa CMS v1.0 administrator/templates/default/html/windows/right.php文件存在任意文件读取漏洞 漏洞环境&#xff1a; 春秋云镜中的漏洞靶标&#xff0c;CVE编号为CVE-2022-25401 漏洞复现 弱口令行不通 直接访问administrator/templates/defau…

如何实现某短视频平台批量作品ID的作品详情采集

声明: 本文仅供学习交流使用,请勿用于非法用途。 在短视频平台的数据分析和内容监测中,批量采集作品详情是一个常见的需求。本文将介绍如何使用 Python 编写一个高效的爬虫程序,根据批量作品 ID 实现作品详情的批量采集。 1. 需求分析 输入:一批作品 ID。输出:每个作品 …

大模型架构与训练方向

一、核心知识领域 ‌模型架构设计‌ 掌握Transformer、MoE&#xff08;Mixture-of-Experts&#xff09;、RetNet等主流架构的原理与实现细节&#xff0c;需深入理解注意力机制、位置编码、稀疏激活等技术‌13。学习多模态融合架构&#xff08;如CLIP、Flamingo&#xff09;&…

STM32 物联网智能家居 (七) 设备子系统--风扇控制

STM32 物联网智能家居 (七) 设备子系统–风扇控制 一、概述 下面我们来讲解设备子系统中的风扇控制,这是我们设备子系统中的最后一章,相信前面大家一家掌握了这种架构分层的编程思想,后续会很容易将程序进行扩展和开发。 上一节我们介绍了OLED屏幕的编程思想,有很多小伙…

MySQL-数据库的基本操作

一、数据库的操作 在这之前&#xff0c;记得下载好MySQL哦~设置密码的时候记得设置一个简单的&#xff0c;千万不要忘记了&#xff01; 这样就是登录成功咯。 ① 显示数据库 &#x1f4d6; show databases&#xff1a;显示当前的数据库 ② 创建数据库 &#x1f4d6; create d…