抽奖模型
2021-07-23 11:45:21 0 举报
通用抽奖模型,涉及任务机制,奖品模型,抽奖策略,设计符合开闭原则,通过抽象经常改动的逻辑,只需实现继承方法可以实现业务扩展,并保证核心代码不发生变更。
作者其他创作
大纲/内容
随机算法
+ type 算法类型
+ calculate() 计算出抽中的位置
新用户注册发放策略
+ times 赠送抽奖次数
+ winLotteryTimes($uid)
自定义算法
抽奖机会发放管理者
+ drawUser 注入抽奖者对象+ lottery 注入策略对象
+ add() 增加抽奖机会
概率算法
签到/打卡获取抽奖机会策略
抽奖机会发放策略接口
+ winLotteryTimes($uid) 获取抽奖机会
拍品奖品
+ type:string =goods+ goodsId:Int
奖品基类
+ type 奖品类型+ id 对应奖品的ID
抽奖算法
抽奖活动管理者
+ prizes 注入奖品对象+ drawUser 注入抽奖者对象- drawId 抽奖活动ID- title 活动标题- drawObj 授奖算法对象- type 抽奖类型
+ drawCode() 生成抽奖码+ Draw() 开奖+ send() 发放奖励
优惠券奖品
+ type:string = coupon+ couponId:string
助力获取抽奖机会策略
抽奖者对象
+ DrawUserID:用户ID+ DrawNum:拥有的抽奖机会
+ incr() 获取抽奖机会+ reduce() 使用抽奖机会+ getDrawNum() 返回用户抽奖机会
1.整个抽奖逻辑模型可以分为:抽奖者模型、活动模型、抽奖机会策略模型、奖品模型、抽奖算法模型2.抽奖从某种程度上就是抽取中奖位置(例:九宫格模式1-9个位置,抽中5号位),每个位置的奖品可自由绑定3.抽奖机会获取是个扩展点,通过继承抽奖机会策略接口来实现不同获取抽奖机会的策略;同理于奖品模型,算法模型4.把整个抽奖的过程做多处切面,每个切面可以通过依赖注入来无缝切换不同的策略,符合设计原则中的开闭原则,即开放了扩展又无不会侵入原有的核心逻辑5.整个设计的思路是把逻辑根据业务边界进行拆分,把经常改动地方做成可装配,通过继承基础接口的形式进行业务扩展
0 条评论
下一页