尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

设计模式-策略

设计模式-策略
📅 发布时间:2026/6/17 20:46:11

定义

策略模式定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法的变化独立于使用算法的客户。简单来说,就是 “准备一组算法,并将每一个算法封装起来,使得它们可以互换”。

核心角色

策略接口
具体策略
上下文

  • 持有一个策略接口的引用。
  • 可以定义一个接口来让策略访问它的数据。
  • 负责将客户的请求委托给当前的策略对象执行。

策略接口和具体策略

public interface StrategyInterface {void test();}@Component
class StrategyInterfaceImpl1 implements StrategyInterface {@Overridepublic void test() {System.out.println("进入StrategyInterfaceImpl1");}}@Component
class StrategyInterfaceImpl2 implements StrategyInterface {@Overridepublic void test() {System.out.println("进入StrategyInterfaceImpl2");}}

上下文【多变种】

@Component
@RequiredArgsConstructor
public class StrategyContext {// Spring会自动将StrategyInterface的所有实现bean注入到这个Map中// Key:bean的名称,Value:对应的策略实现beanprivate final Map<String, StrategyInterface> strategyMap;// 注入所有策略private final List<StrategyInterface> strategies;public void executeStrategy(String strategyType) {StrategyInterface strategy = strategyMap.get(strategyType);if (strategy == null) {throw new BussinessException("未找到对应的策略: " + strategyType);}strategy.test();}public Set<String> getAvailableStrategies() {return strategyMap.keySet();}}

测试

@RestController
@Api(tags = "测试策略模式")
@RequiredArgsConstructor
@RequestMapping("/strategy")
public class StrategyController {private final StrategyContext strategyContext;@GetMapping("/execute")public Result<Boolean> executeStrategy(@RequestParam String type) {strategyContext.executeStrategy(type);return Result.success();}
}

测试结果

策略模式

相关新闻

  • 数据库基本查询语句
  • 《Python数据结构与算法分析》代码
  • jmeter测试mysql

最新新闻

  • Crawl4AI:为AI时代重新定义智能网页爬取的开源利器
  • WorkshopDL:跨平台Steam创意工坊模组下载器技术解析与实战指南
  • 2026年6月名表回收新风向:武汉宝利汇珠宝有限公司,回收手表/名表回收/回收劳力士二手表/欧米茄手表回收正规渠道深度解析 - 品牌推荐官
  • 贵阳黄金回收 六家靠谱店铺推荐 - 清奢黄金上门回收
  • 机床行业推广平台:2026年各品牌机床该去哪里做推广? - 品牌推荐大师1
  • 国内双相钢三通生产厂家实力排行及选型参考 - 起跑123

日新闻

  • 2026年不锈钢卷板厂家推荐排行榜:冷轧热轧/304/201不锈钢卷板,高颜值耐腐蚀源头厂家实力精选 - 企业推荐官【官方】
  • FLUX.1-dev FP8模型实战指南:24GB以下显卡高效部署方案
  • 2026佛山长途搬家价目表:跨省跨市搬家费用完整计算指南 - 从来都是英雄出少年

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号