一、需求分析

1. 抽奖余额有两种,1种【货币1】,1种【货币2】,对应扣除两种余额
2. 不变的部分余额和扣除余额,变化的部分是余额类型与扣除方式,所以可以使用策略模式

二、设计模式思想

1. 定义获得余额和扣除余额抽象方法

2. 策略方法分为【货币1】策略和【货币2】策略

3. 调用放Context根据传入策略执行查询和扣除方法

4. 可扩展,新增【货币3】抽奖,则只需要实现LotteryContext接口

二、代码实现

  • LotteryStrategy
  • /*** 抽奖策略模式* 需求分析:抽奖余额有两种,1种金币,1种奖券;不变的部分余额和扣除余额,变化的部分是余额类型与扣除方式,所以可以使用策略模式* 1. 定义获得余额和扣除余额抽象方法* 2. 策略方法分为金币策略和奖券策略* 3. 调用放Context根据传入策略执行查询和扣除方法* 4. 可扩展,新增钻石抽奖,则只需要实现LotteryContext接口* @author Marion* @date 2021/7/15 09:59*/
    public interface LotteryStrategy {/*** 获得抽奖货币*/long amount(long uid);/*** 扣除抽奖货币*/boolean draw(long uid, long amoun);}
    
  • CoinLotteryStrategy
  • /*** 金币抽奖模式* @author Marion* @date 2021/7/15 10:07*/
    @Component
    public class CoinLotteryStrategy implements LotteryStrategy {/*** 获得抽奖货币*/@Overridepublic long amount(long uid) {return 0;}/*** 扣除抽奖货币* @param uid* @param amount*/@Overridepublic boolean draw(long uid, long amount) {return true;}
    }
    
  • CouponLotteryStrategy
  • /*** 奖券抽奖模式* @author Marion* @date 2021/7/15 10:07,*/
    @Component
    public class CouponLotteryStrategy implements LotteryStrategy {/*** 获得抽奖货币*/@Overridepublic long amount(long uid) {return 0;}/*** 扣除抽奖货币* @param uid* @param amount*/@Overridepublic AssetTransaction draw(long uid, long amount) {return true}}
    
  • LotteryContext
  • /*** 抽奖策略模式* @author Marion* @date 2021/7/15 10:04*/
    public class LotteryContext {private LotteryStrategy lotteryStrategy;public LotteryContext(LotteryStrategy lotteryStrategy) {this.lotteryStrategy = lotteryStrategy;}public long getAmount(long uid) {return this.lotteryStrategy.amount(uid);}public boolean draw(long uid, long amount) {return this.lotteryStrategy.draw(uid, amount);}}
    

三、运行结果

【设计模式实战】SpringBoot模板+策略设计模式实现抽奖流程相关推荐

  1. java策略设计模式_Java中的策略设计模式

    java策略设计模式 策略设计模式是一种行为模式,其中我们有多种算法/策略来完成一项任务,所使用的算法/策略留给客户选择. 各种算法选项封装在单独的类中. 在本教程中,我们将学习在Java中实现策略设 ...

  2. java设计模式实战-(反射+策略模式)

    学完23种设计模式,相信很多同学都疑问,除了单例模式.工厂模式其他模式还有运用的场景吗? 现在这里就举一个例子. 首先策略模式需要先有了解,我们常用策略模式解决实际开发中的if else特别多的场景. ...

  3. 策略模式示例代码_策略设计模式示例

    策略模式示例代码 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式如此重要的 ...

  4. 【设计模式】通俗易懂的Java设计模式篇!

    文章目录 1.设计模式的六大原则 1.1.软件设计开发原则 1.2.设计模式分类 2.创建型设计模式-单例设计模式 2.1.单例模式简介 2.2.懒汉方式实现 2.3.饿汉模式实现 2.4.JDK源码 ...

  5. 创建型设计模式:模板设计模式/观察者设计模式/策略设计模式

    目录 设计模式的设计原则 模板设计模式 观察者模式 策略设计模式 设计模式的设计原则 依赖倒置:高层模块不应该依赖低层模块,两者都应该依赖抽象: 抽象不应该依赖具体实现,具体实现应该依赖于抽象: (记 ...

  6. springboot中使用模板⽅法设计模式-设计模块(六)

    模板⽅法设计模式 抽象模板(Abstract Template): 定义⼀个模板⽅法,这个模板⽅法⼀般是⼀个具体⽅法,给出⼀个顶级算法⻣架, ⽽逻辑⻣架的组成步骤在相应的抽象操作中,推迟到⼦类实现 模 ...

  7. 23种设计模式实战!超级全,超级好懂!

    <高并发系统实战派>-- 你值得拥有 设计模式实战全集: 1,设计模式实战-工厂模式,别具匠心 2,设计模式实战-抽象工厂模式,分而治之 3,设计模式实战-单例模式,我就是天下无双 4,设 ...

  8. 设计模式 - 行为型 - 模板模式学习

    现象: 设计模式 - 行为型 - 模板模式学习 介绍: 模板模式的设计思路,在抽象类中定义抽象方法的执行顺序, 并将抽象方法设定为只有子类实现,但不提供独立访问的方法 只能通过已经被安排好的定义方法去 ...

  9. 23 种设计模式实战 pdf(很全)

    今天分享一份学习资料:23 种设计模式实战教程.pdf,助你快速上手设计模式,写出各种高端代码,文末附下载地址. 设计模式一般分为三大类: 实战教程: 教程共 96 页PDF,太全了!纯粉丝福利,非广 ...

最新文章

  1. jqgrid如何渲染表格数据_jqgrid,jquery_jqGrid pivot 增加分项小计,jqgrid,jquery,jquery插件,javascript,表格 - phpStudy...
  2. Kong APIGW — OpenResty
  3. 【转】关于TP3.2 验证码不显示的问题
  4. AVG Anti-Spyware 7.5 .0.50(原EWIDO)汉化 破解 注册 序列号
  5. python输入一个\输出2个\问题
  6. NC14250 MMSet2
  7. php网站分区,PHP - Manual: 分区和分片 (官方文档)
  8. php背景图添加字,怎样给视频后面加背景图 视频加背景图片并添加一行广告文字...
  9. javascript OOP(下)(九)
  10. KDD CUP 2018:中国团队包揽前三名,TOP1方案出炉
  11. 一加9硬件规格全曝光:120Hz流体屏+双重快充
  12. 作业帮:字符串反转(头部插入)
  13. 计算机信息机房,计算机信息中心机房建设标准
  14. Struts2学习(三)———— 输入校验和拦截器
  15. 线程上下文类加载器(Thread Context ClassLoader)
  16. cognos报表制作学习(一)cognos如何新建普通的reportstudio报表
  17. 基于asp.net719圆通快递物流管理系统
  18. Excel 电子表格文件格式剖析
  19. linux文件l是什么意思,linux 中 我看到lrwxrwxrwx 那个l是什么意思?
  20. 61家公司入选“2021年大中华区最佳职场”榜单;针对“奥密克戎”!云顶新耀与加拿大生物技术公司研发新型疫苗 | 美通社头条...

热门文章

  1. 概率论与数理统计中的独立(独立 独立同分布 不相关)
  2. python微信好友助力_Python大神完成王者荣耀助手助力菜鸟,网友评论:不用担心被喷了...
  3. ENVI软件学习笔记(1)
  4. 医学图像配准论文学习——用于医学图像逆一致微分同胚配准的对称金字塔网络(2023
  5. office word 自定义大纲目录,根据大纲序号来定义子序号
  6. Windows Mobile系统程序与控制面板命令参数
  7. 【Week8作业 C】班长竞选【SCC缩点】
  8. 迅雷创始人程浩写了篇5万+的文章,告诫你创业AI前,必须注意的6大核心问题
  9. JAVA(android)提取WIFI客流探针MAC地址源码
  10. 强大的 10款 Mac 思维导图和流程图软件推荐