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

策略模式实战应用

场景

假设做了个卖课网站,会员等级分为月vip、年vip、终生vip,每个等级买课的优惠力度不一样,传统的写法肯定是一堆的 if-else,现在使用策略模式写出代码实现

代码实现

策略模式的核心思想就是对扩展开放,对修改关闭。

所以需要定义一个接口,便于使用多态
在这里插入图片描述
如下是年vip代码实现
在这里插入图片描述
如下是月vip代码实现
在这里插入图片描述

如下是终生vip代码实现
在这里插入图片描述
最后,在业务层注入bean对象,并进行方法调用,可以看到,这里没有使用@Autowired来进行bean的注入,而是定义了一个 List 构造方法,当Spring IoC实例化这个bean的时候会看构造方法是有参的还是无参的,如果有参数,会把参数一并初始化,如果这个参数是list,会把List集合泛型相关的所有接口子类找出来实例化
在这里插入图片描述
这样就是利用了策略模式改造,如果后续还有其它的什么vip,只需要再重新定义一个接口的实现类即可,CourseRelationService这里面的逻辑无需修改,达到了对扩展开放,对修改关闭的目的。

http://www.lryc.cn/news/124568.html

相关文章:

  • JAVA集合-Map
  • 利用Simulink Test进行模型单元测试 - 1
  • 深入探讨代理技术:保障网络安全与高效爬虫
  • HDMI接口的PCB布局布线要求
  • Linux tar包安装 Prometheus 和 Grafana(知识点:systemd Unit/重定向)
  • 【Vue框架】用户和请求
  • NGINX组件(rewrite)
  • 网页显示摄像头数据的方法---基于web video server
  • SIFT 算法 | 如何在 Python 中使用 SIFT 进行图像匹配
  • K8S系列四:服务管理
  • 冠达管理:融券卖出交易规则?
  • 图像变形之移动最小二乘算法(MLS)
  • 搭建一个功能齐全的网站
  • Java-jar和war包的区别
  • 分类预测 | MATLAB实现CNN-BiGRU-Attention多输入分类预测
  • C#小轮子:Visual Studio自动编译Sass文件
  • iOS字体像素与磅的对应关系
  • 阿里云ACP知识点
  • 小视频AI智能分析系统解决方案
  • 简单谈谈 EMP-SSL:自监督对比学习的一种极简主义风
  • nginx的负载均衡
  • linux系统服务学习(四)Linux系统下数据同步服务RSYNC
  • 走进 Linux
  • Docker高级——Docker Swarm集群和部署应用
  • 【SA8295P 源码分析】74 - QNX secpol 安全策略文件配置详解 及 secpol.bin 编译过程分析
  • Docker入门使用
  • 在SAP上使用 LiquidUI Android 扫描条形码/QR 码
  • Maven - 全面解析 Maven BOM (Bill of Materials):打造高效依赖管理与模块化开发
  • Lua脚本对比redis事务区别是什么
  • ES安装问题汇总