news 2026/5/8 1:25:17

Java常见技术分享-08-策略模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Java常见技术分享-08-策略模式

什么是策略模式?

策略模式的 主要包含三个组件 抽象策略类, 环境类, 具体的策略类。
抽象策略类 我理解 其实就是要解决的问题, 具体的策略类 则是在不同的条件下 解决这个问题的处理逻辑, 而环境类 就是负责在不同条件下 调用不同的策略类。 一般来说 这个条件会用注解的方式 直接放在策略类上,那么 环境类实际上只需要扫描所有 有这个注解 的策略类, 那么 当 实际条件进来 , 根据注解的值,即条件, 直接就能知道 调用哪个策略类。
它核心逻辑 其实跟 if-else 很像, 都是根据不同条件选不同的处理方式, 但策略模式把 每个条件 对应的处理逻辑, 单独抽出来成了一个类。 这样做的好处是 当需要增加新的条件 以及处理方式的时候 不用改原有的代码块, 直接新增一个策略类就好了。 代码会更干净更好维护。 符合开闭原则, 对扩展开放, 对修改关闭。

策略模式在SpringBoot中底层实际用途有了解吗?

SpringBoot 底层 有一个抽象策略类 叫做HttpMessageConverter, 具体的策略类 有处理 JSON的 Jackson 转换器 如 MappingJackson2HttpMessageConverter或者 处理字符串的 StringHttpMessageConverter , 环境类 的职责 则被融入到了 策略类中的 canRead和canWrite 方法,比如 当一个请求进来 , 就会调用转换器的 canRead方法 看请求的 content-type是不是 这个转换器可以处理的, 例如是Json转换器的话, 就看content-type是不是application/json. ,如果是就返回true. 在响应的场景则是 看请求的Accept头 是否等于 application/json 或者 接口有没有指定的 produces= “application/json”, 如果是 , canWrite就会返回true. 这里遇到第一个返回为true的转换器, 就不会其他的转换器了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 14:21:13

Cordova与OpenHarmony运动目标管理系统

欢迎大家加入开源鸿蒙跨平台开发者社区,一起共建开源鸿蒙跨平台生态。 目标驱动的运动 运动目标是激励用户坚持运动的重要因素。通过Cordova框架与OpenHarmony的数据管理能力,我们可以构建一个完整的目标管理系统。本文将介绍这个系统的实现。 目标数据…

作者头像 李华
网站建设 2026/5/3 8:40:40

禁止废话,用人话一句话说清楚CMMI

CMMI 评估就是用业界最佳实践,给企业的真实管理和流程做一次“体检”,看清现在有多成熟、哪里做得好、下一步该怎么改进。👉 CMMI 用行业最成熟的做法, 给企业的管理和流程做一次“体检”。——📌 看清 现在到底什么水…

作者头像 李华
网站建设 2026/5/7 11:31:33

设计模式-适配器模式

引言 我们常常会遇到这样的情况:现有的类功能强大,但接口却与我们当前系统的需求不匹配。这就好比你有一把性能卓越的钥匙(现有类),但锁眼(系统接口需求)却对不上。适配器模式就如同一位神奇的工…

作者头像 李华
网站建设 2026/5/4 18:43:24

Audacity音频处理指令由LobeChat智能生成

Audacity音频处理指令由LobeChat智能生成 在播客制作、语言教学或有声书编辑的日常工作中,一个常见的挑战是:如何高效地从长达数小时的录音中提取有效内容?传统方式往往依赖手动选区、反复试错和对软件功能的深度掌握——这不仅耗时费力&…

作者头像 李华
网站建设 2026/4/27 15:06:26

桌游规则说明:LobeChat清晰解释复杂机制

LobeChat:让复杂桌游规则变得清晰易懂 在智能家居设备日益复杂的今天,确保无线连接的稳定性已成为一大设计挑战。不过今天我们不聊硬件,而是把目光转向另一个“复杂系统”——桌面游戏。像《瘟疫危机》《卡坦岛》这类现代桌游,动辄…

作者头像 李华
网站建设 2026/5/7 23:42:17

无人机视觉锁定与目标跟踪技术深度解析(含完整代码)

前言 最近在做一个无人机自主跟踪的项目,踩了不少坑,也积累了一些经验。这篇文章把视觉锁定这块的核心技术点整理一下,从原理到代码实现都会涉及,希望对有类似需求的朋友有所帮助。 视觉锁定说白了就是让无人机"盯住"一个目标不放,听起来简单,实际做起来会遇…

作者头像 李华