策略模式结合Spring使用
1.抽象策略
/*** 支付方式策略* @author Linging* @version 1.0.0* @since 1.0*/
public interface PayStrategy {void pay(BigDecimal money);}
2.具体策略
/*** 支付宝* @author Linging* @version 1.0.0* @since 1.0*/
@Component("aliPayStrategy")
public class AliPayStrategy implements PayStrategy{@Overridepublic void pay(BigDecimal money) {System.out.println("使用支付宝支付了 " + money + " 元");}
}
/*** 微信支付* @author Linging* @version 1.0.0* @since 1.0*/
@Component("weChatPayStrategy")
public class WeChatPayStrategy implements PayStrategy{@Overridepublic void pay(BigDecimal money) {System.out.println("使用微信支付了 " + money + " 元");}
}
/*** 信用卡支付* @author Linging* @version 1.0.0* @since 1.0*/
@Component("creditCardPayStrategy")
public class CreditCardPayStrategy implements PayStrategy{@Overridepublic void pay(BigDecimal money) {System.out.println("使用信用卡支付了 " + money + " 元");}
}
3.工厂配置策略
/*** 配置策略* @author Linging* @version 1.0.0* @since 1.0*/
@Component
public class PayContentFactory {@Resourceprivate ApplicationContext context;private Map<Integer, PayStrategy> map = new HashMap<>();@PostConstructpublic void init(){for (PayEnum payEnum : PayEnum.values()) {map.putIfAbsent(payEnum.getCode(),context.getBean(payEnum.getBeanName(), PayStrategy.class));}}public PayStrategy getPayStrategyPay(PayEnum payEnum){return map.get(payEnum.getCode());}}
4.枚举
/*** @author Linging* @version 1.0.0* @since 1.0*/
public enum PayEnum {ALI(1, "支付宝", "aliPayStrategy"),WECHAT(2, "微信", "weChatPayStrategy"),CREDIT_CARD(3, "信用卡", "creditCardPayStrategy"),;int code;String remark;String beanName;PayEnum(int code, String remark, String beanName) {this.code = code;this.remark = remark;this.beanName = beanName;}public int getCode() {return code;}public String getRemark() {return remark;}public String getBeanName() {return beanName;}
}
5.使用
@Resourceprivate PayContentFactory payContentFactory;@GetMapping("/testStrategy")public String testStrategy(){payContentFactory.getPayStrategyPay(PayEnum.ALI).pay(new BigDecimal("100"));payContentFactory.getPayStrategyPay(PayEnum.WECHAT).pay(new BigDecimal("99"));payContentFactory.getPayStrategyPay(PayEnum.CREDIT_CARD).pay(new BigDecimal("88"));return "ok";}
相关文章:
策略模式结合Spring使用
1.抽象策略 /*** 支付方式策略* author Linging* version 1.0.0* since 1.0*/ public interface PayStrategy {void pay(BigDecimal money);}2.具体策略 /*** 支付宝* author Linging* version 1.0.0* since 1.0*/ Component("aliPayStrategy") public class AliPa…...
基于 RNNs 对 IMDB 电影评论进行情感分类
前言 系列专栏:【深度学习:算法项目实战】✨︎ 涉及医疗健康、财经金融、商业零售、食品饮料、运动健身、交通运输、环境科学、社交媒体以及文本和图像处理等诸多领域,讨论了各种复杂的深度神经网络思想,如卷积神经网络、循环神经网络、生成对抗网络、门控循环单元、长短期记…...
Midjourney绘画参数设置详解
在数字艺术和设计领域,Midjourney是一款强大的绘画工具,它允许艺术家和设计师以数字方式创作出精美的图像。为了充分发挥Midjourney的潜力,正确设置其绘画参数至关重要。本文将深入探讨Midjourney的绘画参数设置,帮助用户更好地掌…...
计算机毕业设计 | springboot养老院管理系统 老人社区管理(附源码)
1,绪论 1.1 背景调研 养老院是集医疗、护理、康复、膳食、社工等服务服务于一体的综合行养老院,经过我们前期的调查,院方大部分工作采用手工操作方式,会带来工作效率过低,运营成本过大的问题。 院方可用合理的较少投入取得更好…...
事务与并发控制
事务(Transaction0):要么全做,要么全不做; 事务ACID:原子性Atomicity;一致性Consistency;隔离性Isolation;持久性Durability; 并发操作问题: 1.…...
spring boot 中的异步@Async
spring boot 开启异步调用 1、启动类上添加EnableAsync注解,表示启动异步 2、在具体实现异步的方法上添加Async注解 package com.example.demo;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootAppli…...
【C++/STL】list(常见接口、模拟实现、反向迭代器)
🌈个人主页:秦jh_-CSDN博客🔥 系列专栏:https://blog.csdn.net/qinjh_/category_12575764.html?spm1001.2014.3001.5482 目录 前言 list的常见接口 对迭代器的封装 节点 重载-> const迭代器 list与vector的对比 反向迭代…...
wms中对屏幕进行修改wm size设置屏幕宽高原理剖析
背景: 上面是正常屏幕1440x2960的屏幕大小,如果对display进行相关的修改,可以使用如下命令: adb shell wm size 1080x1920 得出如下的画面 明显看到差异就是屏幕上下有黑边了,那么下面就来调研这个wm size是怎么做的…...
java面试题及答案2024,java2024最新面试题及答案(之一)
发现网上很多Java面试题都没有答案,所以花了很长时间搜集整理出来了这套Java面试题大全,希望对大家有帮助哈~ 本套Java面试题大全,全的不能再全,哈哈~ 一、Java 基础 1. JDK 和 JRE 有什么区别? JDK:Ja…...
Go Modules 使用
文章参考https://blog.csdn.net/wohu1104/article/details/110505489 不使用Go Modules,所有的依赖包都是存放在 GOPATH /pkg下,没有版本控制。如果 package 没有做到完全的向前兼容,会导致多个项目无法运行(包版本需求不同)。 于是推出了g…...
结账和反结账
结账与反结账功能在财务软件和会计系统中扮演着重要的角色,以下是关于这两个功能的详细解释: 一、结账功能 结账功能是计算和结转各个会计科目本期发生额和期末余额的过程,同时标志着一定时期内财务活动的结束和财务数据的固化。结账功能的…...
k8s怎么监听资源的变更
监听k8s所有的 Deployment 资源 package mainimport ("context""fmt"v1 "k8s.io/api/apps/v1""k8s.io/apimachinery/pkg/util/json""k8s.io/client-go/informers""k8s.io/client-go/kubernetes""k8s.io/cli…...
Cobaltstrike常用功能
一、快捷工具栏 3、需要创建监听器,才能让靶机上线,连接我们公网服务端上去开启的帧监听端口,做任何操作 都是通过服务器的IP地址去连接靶机,去和靶机进行文件stage的一个传输和交互。这里推荐把cs 放到公网上边,比较…...
UWP与WPF:微软两大UI框架
在微软的开发者生态系统中,UWP(Universal Windows Platform)与WPF(Windows Presentation Foundation)是构建Windows应用的两大明星框架。它们各自携带独特的设计理念和技术特性,服务于不同的开发需求和应用场景。本文将深入探讨这两者之间的异同…...
【面试】字节码文件是跨平台的吗?
目录 1. 说明 1. 说明 1.字节码文件(.class文件)是跨平台的。2.字节码文件是Java源代码经过Java编译器(javac)编译后生成的中间代码文件,这些包含了Java虚拟机(JVM)指令,而不是特定…...
SpringCloud中注册中心Nacos的下载与使用步骤
1.前言 Nacos(Dynamic Naming and Configuration Service)是阿里巴巴开源的一款服务发现和配置管理工具。它可以帮助用户自动化地进行服务注册、发现和配置管理,是面向微服务架构的一个重要组成部分。 2.下载 链接:https://pan.b…...
心缘Hub小程序
心缘Hub小程序 文章目录 心缘Hub小程序[TOC](文章目录) 前言飞书文章:[添加链接描述](https://mqdyd6qj756.feishu.cn/wiki/X9qbwrq70i43W0kr5X8cqytSnKb) 一、简介 前言 飞书文章:添加链接描述 一、简介 心缘Hub 不要钱可以匹配 有缘人 、直接拿微信…...
攻防世界maze做法(迷宫题)
首先查壳64bit,直接丢进ida64中进行反编译就完事儿了,然后直接进入main函数打注释分析首先,题目已经提示了这是个迷宫题,我们抓住做迷宫题的两个要点,一找玩法,二找地图, 玩法在主函数中&#…...
PID——调参的步骤
第一步:确定比例增益P 确定比例增益 P 时,首先去掉 PID 的积分项和微分项,一般是令 Ti0、 Td0(具体见PID 的参数设定说明),使PID 为纯比例调节。 输入设定为系统允许的最大值60%~70%,由0逐渐加…...
Deno入门:Node.js的现代替代品
Deno 作为 Node.js 的现代替代品,提供了许多改进和创新,尤其是在安全性、模块系统和开发体验方面。虽然它仍处于发展阶段,但对于寻求简洁、安全和现代化 JavaScript/TypeScript 开发环境的开发者来说,Deno 是一个值得考虑的选择。…...
信通院:AI4SE行业现状调查报告 2026
这份信通院 2026 年 AI4SE 行业现状调查报告,核心是 AI 与软件工程深度融合进入规模化落地关键期,全流程提效显著,企业高度重视,但仍面临人才、成本等挑战,未来将走向自主编程、多智能体协同的新范式。一、调研概况有效…...
09_Neo4j知识体系之行业应用与最佳实践
09_Neo4j知识体系之行业应用与最佳实践 体系 行业应用层:金融反欺诈、智能推荐、社交网络分析、知识图谱构建、供应链优化关联能力:与图建模、路径分析、图算法、GraphRAG、实时决策和企业数据治理密切相关适用对象:解决方案架构师、行业数字…...
如何快速掌握DownKyi:从新手到专家的完整视频下载指南
如何快速掌握DownKyi:从新手到专家的完整视频下载指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#…...
2026最权威的五大降重复率网站横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 需从词汇、句式跟逻辑这三方面来着手,以求降低AI生成内容的可识别性。于词汇方面…...
跨越时空的图形接口桥梁:d3d8to9如何让经典游戏重获新生
跨越时空的图形接口桥梁:d3d8to9如何让经典游戏重获新生 【免费下载链接】d3d8to9 A D3D8 pseudo-driver which converts API calls and bytecode shaders to equivalent D3D9 ones. 项目地址: https://gitcode.com/gh_mirrors/d3/d3d8to9 当经典遭遇现代&am…...
从继电器到模拟开关:用CircuitJS带你搞懂‘开关控制开关’的进化史
从继电器到模拟开关:用CircuitJS带你搞懂‘开关控制开关’的进化史 在电子工程的发展历程中,开关器件从笨重的机械结构演变为集成电路中的微小模块,这一过程不仅是技术的进步,更是设计思维的抽象化革命。当你第一次在CircuitJS仿真…...
3个技巧让你轻松掌控暗黑2角色命运:d2s-editor的存档修改艺术
3个技巧让你轻松掌控暗黑2角色命运:d2s-editor的存档修改艺术 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 在《暗黑破坏神2》的冒险旅程中,你是否曾因误加属性点而让精心培养的角色沦为废号࿱…...
从0到1的yapi接口文档部署记录
skills结合ai生成文档 顺便记录下使用一开始我想的是就用ai生成文档,还特意总结了skills方便后面使用,总结如下 --- name: Generate API Document For Controller description: 根据Controller生成详细的接口文档,包含请求方式、入参解释、…...
魔兽争霸3游戏性能优化全攻略:从卡顿到流畅的实战指南
魔兽争霸3游戏性能优化全攻略:从卡顿到流畅的实战指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 当你在魔兽争霸3的团战关键时刻&…...
数字游民装备:OpenClaw+Qwen3-32B的轻量化旅行方案
数字游民装备:OpenClawQwen3-32B的轻量化旅行方案 1. 为什么数字游民需要本地AI助手 去年在巴厘岛旅居时,我深刻体会到数字游民的工作痛点:不稳定的网络、时区差异导致的协作延迟、以及移动办公场景下的效率损耗。当你在咖啡馆处理文件时&a…...
