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

苏州网站推广工具wordpress用户分组管理

苏州网站推广工具,wordpress用户分组管理,电脑软件推广联盟,注册电气工程师考试这两天学习了策略模式和模板模式#xff0c;总结一下这两种模式。 一、策略模式 策略模式的使用场景主要是同一类行为的不同实现上#xff0c;如 不同类型的交易⽅式(信⽤卡、⽀付宝、微信)、⽣成唯⼀ID策略 (UUID、DB⾃增、DBRedis、雪花算法、Leaf算法) 策略模式主要有…这两天学习了策略模式和模板模式总结一下这两种模式。 一、策略模式 策略模式的使用场景主要是同一类行为的不同实现上如 不同类型的交易⽅式(信⽤卡、⽀付宝、微信)、⽣成唯⼀ID策略 (UUID、DB⾃增、DBRedis、雪花算法、Leaf算法) 策略模式主要有下面这3个类 方法接口具体的多个不同实现策略选择类 下面举一个具体的例子在抽奖的时候有不同的抽奖策略下面这个例子有两个抽奖策略的实现 方法接口 public interface IDrawAlgorithm {/*** SecureRandom 生成随机数索引到对应的奖品信息返回结果** param strategyId 策略ID* param excludeAwardIds 排除掉已经不能作为抽奖的奖品ID留给风控和空库存使用* return 中奖结果*/String randomDraw(Long strategyId, ListString excludeAwardIds);} 策略实现类 策略1 Component(singleRateRandomDrawAlgorithm) public class SingleRateRandomDrawAlgorithm extends BaseAlgorithm {Overridepublic String randomDraw(Long strategyId, ListString excludeAwardIds) {// 策略1实现return awardId;}}策略2 Component(entiretyRateRandomDrawAlgorithm) public class EntiretyRateRandomDrawAlgorithm extends BaseAlgorithm {Overridepublic String randomDraw(Long strategyId, ListString excludeAwardIds) {// 策略2实现// 返回中奖结果return awardId;}}策略选择类 public class StrategyContext {private IDrawAlgorithm drawAlgorithm;public StrategyContext(IDrawAlgorithm drawAlgorithm) {this.drawAlgorithm drawAlgorithm;}public String randomDraw(Long strategyId, ListString excludeAwardIds) {return drawAlgorithm.randomDraw(strategyId, excludeAwardIds);} } 测试 public static void main(String[] args) {StrategyContext strategyContext new StrategyContext(new SingleRateRandomDrawAlgorithm());strategyContext.randomDraw(10001L, new ArrayList());} 二、模板模式 当一个事情可以流程化来做的时候可以使用模板模式来开发模版模式中有下面几个流程 定义接口在抽象类中实现接口并且将模板定义在抽象类中具体的实现类继承抽象类实现自己特有的逻辑公共的逻辑在抽象类中实现 下面是一个抽奖的例子将抽奖的流程固定在模板抽象类中 定义接口 public interface IDrawExec {/*** 抽奖方法* param req 抽奖参数用户ID、策略ID* return 中奖结果*/DrawResult doDrawExec(DrawReq req);} 在抽象类中实现接口并且将模板定义在抽象类中 这里面获取不在抽奖范围内的列表和执行抽奖算法步骤是包含业务逻辑的这些可以在子类中实现公共的放在抽象类中。 public abstract class AbstractDrawBase extends DrawStrategySupport implements IDrawExec {private Logger logger LoggerFactory.getLogger(AbstractDrawBase.class);Overridepublic DrawResult doDrawExec(DrawReq req) {// 1. 获取抽奖策略StrategyRich strategyRich super.queryStrategyRich(req.getStrategyId());Strategy strategy strategyRich.getStrategy();// 2. 校验抽奖策略是否已经初始化到内存this.checkAndInitRateData(req.getStrategyId(), strategy.getStrategyMode(), strategyRich.getStrategyDetailList());// 3. 获取不在抽奖范围内的列表包括奖品库存为空、风控策略、临时调整等ListString excludeAwardIds this.queryExcludeAwardIds(req.getStrategyId());// 4. 执行抽奖算法String awardId this.drawAlgorithm(req.getStrategyId(), drawAlgorithmGroup.get(strategy.getStrategyMode()), excludeAwardIds);// 5. 包装中奖结果return buildDrawResult(req.getuId(), req.getStrategyId(), awardId);} 具体的实现类继承抽象类实现自己特有的逻辑 public class DrawExecImpl extends AbstractDrawBase {private Logger logger LoggerFactory.getLogger(DrawExecImpl.class);Overrideprotected ListString queryExcludeAwardIds(Long strategyId) {// 获取不在抽奖范围内的列表逻辑return awardList;}Overrideprotected String drawAlgorithm(Long strategyId, IDrawAlgorithm drawAlgorithm, ListString excludeAwardIds) {// 抽奖逻辑return isSuccess ? awardId : null;}}
http://www.pierceye.com/news/887540/

相关文章:

  • 书店商城网站设计万网虚拟主机做网站教程
  • 文化类网站是不是休闲娱乐类网站wordpress插件 ftp
  • 织梦系统网站吉林省建设安全厅官方网站
  • 网站推广网站关键词排名怎么做建站教程wp
  • 用织梦系统做网站产权网站建设需要掌握什么技术
  • 南宁seo平台费用安徽网站关键词优化排名
  • 李贤威 wordpress甘肃搜索引擎网络优化
  • 网站建设的步骤图片过程9377将军
  • 做彩票网站需要什么服务器wordpress slug
  • 个人空间网站建设太原做网页软件
  • 网站建站方式有哪些wordpress星座主题自适应
  • 如何为公司做网站算命 网站开发
  • 那些做软件的网站十大装潢公司上海
  • wordpress 仿站 主题公路建设网站
  • 接网站 建设网站建设业务员招聘
  • 江西工程建设信息网站服装公司网站建设
  • 什么店是做网站制作的dw网站结构图怎么做
  • 一个网站开发需要多久软件开发工时费用标准
  • 做网站 公司不懂英文怎么做英文的seo网站
  • 南宁企业门户网站建设价格连云港网站建设电话
  • 石林彝族网站建设网站活动页面设计
  • 网站建设流程表推广联盟有哪些平台
  • 制作网站深圳建大型门户网站
  • 网站开发招标技术规范书网站建设动态静态
  • 阿里巴巴网站开发工具北京的网站制作公司
  • 石家庄网站营销互联网运营培训课程
  • 单位网站服务的建设及维护oa软件定制开发
  • 银川公司网站建设zepto网站开发
  • 看谁做的好舞蹈视频网站电话营销
  • 开封建网站到哪里学平面设计