策略模式-应用于支付场景

vue微前端qiankun框架学习到项目实战,基座登录动态菜单及权限控制 技术无关,独立开发,独立部署,增量升级,独立运行,微前端的核心目标是将巨石应用拆解成若干可以自治的松耦合微应用。 阅读详情

策略模式

在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。

在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。

介绍

意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。

主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。

如何解决:将这些算法封装成一个一个的类,任意地替换。

关键代码:实现同一个接口。

应用实例: 1、诸葛亮的锦囊妙计,每一个锦囊就是一个策略。 2、旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。 3、JAVA AWT 中的 LayoutManager。

优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。

缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。

使用场景: 1、如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。 2、一个系统需要动态地在几种算法中选择一种。 3、如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。

注意事项:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。

现在用代码来进行支付场景的模拟

写代码之前先设计好

有订单类:里面有支付方法,返回支付结果(所以有对应支付结果类)

支付接口:为支付方式的规范,所有支付方式都要实现此接口

支付接口,支付宝支付:为了举例给出两种(有自己的支付算法)

支付类型枚举类,供用户选择支付类型

测试类:模拟场景测试

按顺序给出代码

订单类

支付接口

支付结果

支付类型枚举类

测试类

可能不咋符合面向对象,支付写在订单里,但本处仅为了体现策略模式的应用

转载请附上原文地址,谢谢

基于深度学习的UWB门禁检测 针对基于UWB技术智能门禁管理系统,由于测距误差或非视距原因导致门禁产生不合理动作的现象。分析如何采用基于深度学习的方法,通过对TWR测距数据、TWR监听数据、到达角度差(PDOA)、信道脉冲响应(CIR)等数据维度进行深度学习,利用 TensorFlow建立相应的推导模型,对卡片姿态进行更加精准可靠的检测,从而更好完成闸机开合控制。 阅读详情

相关推荐

[南大ICS-PA2] 字符串处理函数和printf实现

[南大ICS-PA2] 程序、运行时环境与AM 字符串处理函数和printf实现

qq_42474104的博客 2987

设计模式结合场景(1)——支付场景(策略+工厂+模板)

面试官:你们项目的支付场景用了哪些设计模式,为什么要这么做?一、背景 二、方案三、UML类图 四、代码实现 4.1 Payment——支付接口 4.2 Alipay、WeChatPay——支付具体策略 4.3 PaymentFactory——支付工厂4.4 PaymentTemplate——抽象模板4.5 WeChat、AlipayTemplate——具体模板4.6 test 五、总结

让~学习~成为一种习惯(橡 皮 人の技术博客) 2671

WRF模型下中国土地利用数据替换USGS-24分类的完整实践指南

本文提供了在WRF模型中,将中国土地利用数据替换默认USGS-24分类的完整实践指南。详细阐述了替换下垫面数据的必要性,并分步讲解了数据准备、坐标转换、分类体系重映射、格式转换及配置文件修改等核心操作,旨在帮助用户提升针对中国区域的模拟精度。

salt的博客 777

【策略模式实现多种支付】

使用策略模式实现多种支付方式

lyc000412的博客 4643

深信服技术认证“SCCA-C”划重点:信服云托管云

该认证包括云数据中心基础、云计算基础、云计算关键技术、云计算交付和运维体系、云计算技术商业应用、信服云托管云、深信服超融合HCI、深信服桌面云aDesk、深信服分布式存储EDS、深信服应用交付AD。学习并获得SCCA-C认证后,可以具备深信服产品功能原理与实践,能够根据业务需求,协助完成云产品方案落地与实施;能够根据业务需求,完成深信服云产品的部署和管理的基本工作。为帮助大家更加系统化地学习云计算知识,高效通过云计算工程师认证,深信服特推出“SCCA-C认证备考秘笈”,共十期内容。

sangfor_edu的博客 613

深入解析MATLAB四旋翼仿真案例asbQuadcopter的核心模块与优化技巧

本文深入解析了MATLAB/Simulink中的四旋翼无人机官方案例asbQuadcopter,详细拆解了其指令、传感器、控制器、本体与环境等核心模块的工作原理。重点探讨了经典的PID双环控制结构、传感器噪声模拟、模型替换方法以及系统化的PID参数调优技巧,旨在帮助用户从“开箱即用”过渡到深度定制与优化,构建更精准的仿真模型。

weixin_29171087的博客 361

Java设计模式 | 基于订单批量支付场景,对策略模式和简单工厂模式进行简单实现

使用策略模式+简单工厂模式 模拟批量支付场景。

程序员雅痞的博客 1865

7 series FPGAs Transceiver Wizard IP核使用和测试

学习FPGA一段时间了,前面一直没有系统的总结,这学期把在项目中用到的IP核和一些调试过程中遇到的问题总结一下发出来,坚持下去,一起进步! 今天总结一下的GTH核的使用和测试。 软件版本:Vivado 2017.4 IP核版本:7 Series FPGAs Transceivers Wizard (3.6) FPGA:xc7vx690tfft1927 实现功能: 四路光纤数据接收,由于GTX IP...

qq_39921762的博客 1万+

【springboot进阶】如何优雅使用策略模式解决多支付方式场景问题

策略模式在项目开发中是比较常用的一种设计模式,策略模式是解决过多 if-else(或者 switch-case) 代码块的方法之一,提高代码的可维护性、可扩展性和可读性。

5100

【ComfyUI】Wan2.2 + IndexTTS 图像数字人或动物口播视频生成

本文介绍了一个基于ComfyUI的数字人口播视频生成工作流,整合了IndexTTS和图像处理技术。该系统通过多模型协同工作,实现从形象图、文本和音频输入到自动生成口播视频的全流程。核心包含WanVideo系列模型,通过CLIP Vision、T5文本编码器和Wav2Vec语音模型分别处理视觉特征、语义理解和口型同步。工作流涵盖素材加载、特征提取、音频处理和视频生成等节点,支持人物、动物等多种主体的口播内容创作。该方案自动化程度高,适用于知识讲解、剧情旁白等多种场景,能帮助创作者高效产出高质量口播视频。

Mr数据杨 2053

【3D Slicer】的小白入门使用指南一

3D Slicer 是一个免费的开源软件平台,用于医学、生物医学和其他 3D 图像的可视化、处理、分割、配准和分析。Slicer 的功能包括:读/写。

图挖掘领域,新晋砖家 ☞ 未来可期,欢迎和静静一起学习交流吖 5555

策略模式实现多种支付方式

*策略上下文角色** PayStrategyFactory:策略上下文,负责和具体的策略实现交互,通常策略上下文对象会持有一个真正的策略实现对象,策略上下文还可以让具体的策略实现从其中获取相关数据,回调策略上下文对象的方法。System.out.println("用户选择 支付宝 支付,订单号为:" + orderId + " ,支付金额:" + amount);System.out.println("用户选择 京东 支付,订单号为:" + orderId + " ,支付金额:" + amount);

dsy__的博客 705

刷机维修进阶教程-----adb禁用错了系统app导致无法开机 如何保数据无损恢复机型

在刷机维修过程中 。我们会遇到一些由于客户使用adb指令来禁用手机app而导致手机无法开机进入系统的故障机型。通常此类问题机型有好几种解决方法。但如果客户需要保数据来恢复机型。其实操作也是很简单的.还有类似误删除应用导致不开机等等如何保数据。  通过博文了解💝💝💝    1💝💝💝----adb禁用或者删除系统app导致无法开机的几种解决方法 2💝💝💝----如何保数据来无损恢复机型 3💝💝💝----其他保数据解决系统类故障无法开机的步骤解析

小马哥的专栏 1352

原来使用 Spring 实现策略模式可以这么简单!

Hello,大家好,我是鸭血粉丝~最近看同事的代码时候,学到了个小技巧,在某些场景下非常挺有用的,这里分享一下给大家。Spring 中@Autowired注解,大家应该不会陌生,用过 ...

singwhatiwanna 445

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

java设计模式:(策略模式)

策略(Strategy)模式: 用意是定义一组算法,把它们一个个封装起来,并且使他们可以相互替换。这样策略模式就可以独立使用它们的客户端变化。    由此可以看出策略模式是由三部分自称的。 1、抽象策略(Strategy)角色:是抽象类或接口来承担,由它定义所需要实现的接口; 2、具体策略(ConcreteStrategy)角色:实现封装了具体的算法或行为;

wanghang88 350

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

【设计模式】策略模式

策略模式允许定义一系列不同的算法,客户端可在不同的算法间轻松切换 1、

tqkm 272

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

Java设计模式:策略模式与工厂模式深度解析

策略模式定义了一系列算法,并将每一个算法封装起来,使它们可以相互替换。策略模式让算法独立于使用它的客户端而变化。简单来说,当你需要根据不同的情况选择不同的算法或行为时,策略模式就能派上用场。工厂模式是一种创建型设计模式,它提供了一种创建对象的方式,而无需在代码中显式指定要创建的对象的具体类。工厂模式将对象的实例化过程封装起来,使客户端与具体类的实现解耦。策略模式和工厂模式都是Java中非常重要的设计模式。策略模式侧重于封装行为,让行为在运行时可以自由切换,解决了“做什么”的问题。工厂模式。

2501_91015529的博客 868

设计模式(十三)策略模式 — 封装算法并自由切换,让行为更灵活

策略模式是一种将算法封装成独立模块的设计模式,允许运行时动态切换行为。它适用于支付方式、优惠算法等可替换业务场景,核心思想是将策略抽象为接口,通过上下文类调用具体实现。该模式优势在于开闭原则、解耦和避免if/else,但需注意避免策略内部再分支或Context固化策略等误区。在Spring中可结合@Autowired实现策略自动装配,适用于电商、支付等系统的灵活扩展场景。

ZHE|张恒的博客 998

设计模式:策略模式

本文介绍了策略模式如何通过"定义接口、封装策略、运行时切换"三步将算法的选择与实现解耦,并用工厂模式和 Spring自动注入两种进阶用法演示了策略模式在实际项目中的最佳实践。

weixin_68431870的博客 585

GoF设计模式——策略模式

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

多低调的博客 269

面向对象设计模式在C++中的实现案例

这些特性共同构成了设计模式的实现基础,例如工厂模式依赖多态创建对象,而策略模式则通过接口抽象实现算法替换。在C++中,工厂模式通过抽象工厂接口实现对象创建的松耦合,典型案例如物流管理系统中的运输工具创建。// 私有化构造函数 public: static DatabasePool& getInstance() { std::call_once(flag, []{ instance = new DatabasePool();

ydasw34623的博客 712

开闭原则详解(OCP)

开闭原则(OCP)要求软件实体对扩展开放而对修改关闭。通过抽象和多态实现这一目标,可以减少修改代码带来的风险。文中以图形计算器为例,展示了违反OCP的实现(需要频繁修改代码)和符合OCP的重构方案(通过Shape接口实现扩展)。重构后,新增图形类型只需实现接口而无需修改现有代码,有效降低了维护成本。该原则强调通过抽象设计保持系统稳定性的同时支持功能扩展。

2301_81016208的博客 461

支付宝、京东支付场景之策略模式实战

点击猿码天地关注我们我是「猿码天地」,一个热爱技术、热爱编程的IT猿。技术是开源的,知识是共享的!写作是对自己学习的总结和记录,如果您对 Java、分布式、微服务、中间件、Spring ...

猿码天地 583

注解驱动的策略模式实现:简化复杂业务逻辑

本文介绍了如何通过注解实现策略模式,旨在简化和优化传统策略模式的实现过程。通过三个不同的业务场景,从简单到复杂的注解方式展示了如何灵活地应用策略,避免了大量的工厂模式和策略类。文章首先介绍了基本的注解定义和策略实现方法,接着演示了如何组合注解进行复杂策略的实现,最后探讨了如何利用注解优化策略模式的扩展性和维护性。通过本文的学习,开发者可以更加高效、优雅地实现动态策略选择,提升项目的可维护性和灵活性。

曾经“等你生日那天”都遥远得像未来,如今却可欢愉的挥手说“下个十年见” 6万+

策略模式(什么是策略模式、策略模式的应用场景、策略模式的优点和缺点、策略模式在项目中的应用)

策略模式(什么是策略模式、策略模式的应用场景、策略模式的优点和缺点、策略模式在项目中的应用)

聂可以的博客 2363

策略模式在支付场景中的最佳实践

版本 SpringBoot:2.2.5.RELEASE Jdk:1.8 Maven:3.5.2 Idea:2019.3 准备 模板方法模式在支付场景中的最佳实践 食用 0:融入策略模式 支付场景中加入模板方法模式后,还有一点可以改进的地方:选择支付方式,在“模板方法模式在支付场景中的最佳实践”一文中我们发现,发起支付时,我们需要手动选择对应的支付方式来发起支付,下面来看看如何根据传入的“支付方...

LIUUUU 436
上一篇: 如何在代码里获取配置文件的某个属性的值
下一篇: 模板模式 ——仿写JdbcTemplate
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我才是真的封不觉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值