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

java 设计模式_行为型_14策略模式

14.策略模式

策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。
策略模式把这些算法,都抽取出来,组成一个一个的类,可以任意的替换,大大降低了代码的耦合度。
实现原理:将相同行为抽成一个接口(行为接口),定义方法,将具体实现定义实现类(算法类),在调用算法的方法中,用行为接口作为参数,调用方法.在实参传具体接口实现类(算法类),从而不同实现类,实现不同效果.
优点

  • 算法多样性,且具备自由切换功能;
  • 有效避免多重条件判断,增强了封装性,简化了操作,降低出错概率;
  • 扩展性良好,策略类遵顼里氏替换原则,可以很方便地进行策略扩展;

缺点

  • 策略类数量增多,且所有策略类都必须对外暴露,以便客户端能进行选择;
    使用场景
  • 针对同一类型问题,有多种处理方式,每一种都能独立解决问题;
  • 算法需要自由切换的场景;
  • 需要屏蔽算法规则的场景;
    1、策略接口
public interface IStrategy {/***现在的运行状态*/void sportStatus();
}

2、若干策略实现类
红灯:

public class RedLight implements IStrategy {@Overridepublic void sportStatus() {System.out.println("红灯停");}
}

黄灯:

public class YellowLight implements IStrategy {@Overridepublic void sportStatus() {System.out.println("黄灯等待");}
}

绿灯:

public class GreenLight implements IStrategy {@Overridepublic void sportStatus() {System.out.println("绿灯行");}
}

3、策略上下文对象

@AllArgsConstructor
@NoArgsConstructor
@Data
public class StrategyContext {private IStrategy iStrategy;public void contextMethod(){iStrategy.sportStatus();}}

4、测试类

public class StrategyTest {public static void main(String[] args) {IStrategy yellowLight = new YellowLight();StrategyContext strategyContext = new StrategyContext(yellowLight);strategyContext.contextMethod();}
}

相关文章:

  • 数据结构 学习 队列 2025年6月14日 11点22分
  • 智能穿戴平台与医疗AI融合发展路径研究
  • 微信小程序使用画布实现飘落泡泡功能
  • 【软测】node.js辅助生成测试报告
  • RK3568 usb gadget功能配置
  • QCombobox设置圆角下拉列表并调整下拉列表位置
  • [每周一更]-(第144期):Go 定时任务的使用:从基础到进阶
  • github-mcp-server v0.5.0 发布详解:远程 GitHub MCP 服务器全新升级与最佳实践
  • Arduino入门教程:4-1、代码基础-进阶
  • PySpark 使用pyarrow指定版本
  • Android-Mod-Menu 使用教程
  • AlibabaCloud+SpringCloud简述
  • 基于Python学习《Head First设计模式》第十三章 现实世界中的模式
  • Python3 学习(菜鸟)-02基本数据类型
  • 基于Python学习《Head First设计模式》第十一章 代理模式
  • 使用Cursor + Devbox + Uniapp 一站式AI编程开发移动端(App、H5、小程序)
  • 分布式定时任务系列12:XXL-job的任务触发为什么是死循环?
  • 动态组件(component)的高级使用
  • 软件测试之简单基础的安全测试方法(另外包含软测面试题库)
  • 【Flutter】程序报错导致的灰屏总结
  • 做汽车配件生意的网站/百度点击优化
  • 杭州建站模板制作/东莞做网站排名优化推广
  • 网站建设的费用怎么做账/seo关键词优化推广外包
  • 用ps做网站网页/seo每日工作
  • 网页设计与制作课程实施报告/泰州百度seo
  • 免费php源码资源网/网站seo优化分析