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

23种设计模式之【策略模式】-核心原理与 Java 实践 - 详解

23种设计模式之【策略模式】-核心原理与 Java 实践 - 详解
📅 发布时间:2026/6/20 12:03:41

策略模式的核心原理

策略模式(Strategy Pattern)是一种行为型设计模式,它的核心思想行概括为:将一系列可互换的算法封装起来,使得它们可以相互替换,并且算法的变化不会影响使用算法的客户端。

策略模式的三大核心角色

  • 抽象策略(Strategy):定义所有具体策略的公共接口,通常是一个接口或抽象类,声明了具体策略必须建立的技巧。
  • 通过具体策略(Concrete Strategy):实现抽象策略接口,含有具体的算法实现。策略模式中能够有多个具体策略。
  • 上下文(Context):持有一个策略对象的引用,负责与策略对象交互。上下文会将具体的算法执行委托给策略对象,客户端利用上下文来使用策略,而无需直接与具体策略交互。
    在这里插入图片描述

策略模式的核心优势

  • 消除大量条件判断:用多态替代 if-else 或 switch-case,使代码更清晰
  • 遵循开闭原则:新增策略只需搭建接口,无需修改原有代码
  • 提高代码复用性:每个策略都是独立的类,便于复用和测试
  • 动态切换算法:可以在运行时根据需要切换不同的策略

策略模式的核心优势

  • 消除大量条件判断:用多态替代 if-else 或 switch-case,使代码更清晰
  • 遵循开闭原则:新增策略只需实现接口,无需修改原有代码
  • 独立的类,便于复用和测试就是提高代码复用性:每个策略都
  • 动态切换算法:可以在运行时根据需要切换不同的策略

实际应用场景

策略模式在实际开发中广泛应用,例如:

支付方式选择:支付宝、微信、银联等不同支付策略
排序算法:冒泡排序、敏捷排序、归并排序等可互换
导航算法:步行导航、驾车导航、公共交通导航等
折扣计算:普通折扣、会员折扣、满减折扣等

Java 实践

// 策略接口:计算操作
interface CalculationStrategy {
int execute(int a, int b);
}
// 具体策略:加法
class AdditionStrategy
implements CalculationStrategy {
@Override
public int execute(int a, int b) {
return a + b;
}
}
// 具体策略:减法
class SubtractionStrategy
implements CalculationStrategy {
@Override
public int execute(int a, int b) {
return a - b;
}
}
// 具体策略:乘法
class MultiplicationStrategy
implements CalculationStrategy {
@Override
public int execute(int a, int b) {
return a * b;
}
}
// 环境类:计算器
class Calculator
{
private CalculationStrategy strategy;
public void setStrategy(CalculationStrategy strategy) {
this.strategy = strategy;
}
public int calculate(int a, int b) {
if (strategy == null) {
throw new IllegalStateException("策略未设置");
}
return strategy.execute(a, b);
}
}
// 测试类
public class StrategyPatternDemo
{
public static void main(String[] args) {
Calculator calculator = new Calculator();
// 使用加法策略
calculator.setStrategy(new AdditionStrategy());
System.out.println("10 + 5 = " + calculator.calculate(10, 5));
// 使用减法策略
calculator.setStrategy(new SubtractionStrategy());
System.out.println("10 - 5 = " + calculator.calculate(10, 5));
// 使用乘法策略
calculator.setStrategy(new MultiplicationStrategy());
System.out.println("10 * 5 = " + calculator.calculate(10, 5));
}
}

相关新闻

  • RMQ与LCA学习笔记
  • mamba-硬件感知算法
  • gitee和github如何修改仓库名并且保持与原远程仓库的连接?(手把手教学) - 实践

最新新闻

  • Kali Linux安装配置Burp Suite专业版完整指南
  • 2026年6月最新江诗丹顿中国官方售后服务电话地址热线及客服网点 - 江诗丹顿服务中心
  • 2026 年 6 月最新腕表干货!万国全大陆官方正规维修门店地址完整公示,全国统一售后热线同步全新上线 - 万国中国服务中心
  • 天津名包回收机构实地测评:5家店报价服务全方位对比,看完再卖! - 讯息早知道
  • 2026年6月最新劳力士中国官方售后热线服务电话客户地址网点 - 劳力士服务中心
  • 2026年大平层装修深度测评:如何为你的改善型住宅匹配最佳方案? - 速递信息

日新闻

  • 信任的进化:技术实现详解——如何用JavaScript构建博弈论模拟器
  • Terrakube自定义工作流:如何集成OPA、Infracost等工具扩展IaC能力
  • grunt-concurrent快速入门:5分钟学会并行运行Grunt任务

周新闻

  • 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 号