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

一个完整的个人网站智能科技网站模板

一个完整的个人网站,智能科技网站模板,wordpress 点图片链接,保险平台有哪些基于订单批量支付场景#xff0c;对策略模式和简单工厂模式进行简单实现 文章目录 策略模式介绍实现抽象策略具体策略1.AliPayStrategy2.WeChatPayStrategy 环境 使用简单工厂来获取具体策略对象支付方式枚举策略工厂接口策略工厂实现 测试使用订单实体类对订单进行批量支付结… 基于订单批量支付场景对策略模式和简单工厂模式进行简单实现 文章目录 策略模式介绍实现抽象策略具体策略1.AliPayStrategy2.WeChatPayStrategy 环境 使用简单工厂来获取具体策略对象支付方式枚举策略工厂接口策略工厂实现 测试使用订单实体类对订单进行批量支付结果 扩展一种支付方式银行卡支付支付策略新增支付枚举新增工厂新增生产银行卡重新测试 策略模式 介绍 以下是菜鸟教程对策略模式的介绍: 策略模式 在策略模式定义了一系列算法或策略并将每个算法封装在独立的类中使得它们可以互相替换。通过使用策略模式可以在运行时根据需要选择不同的算法而不需要修改客户端代码。 策略模式主要有三个角色 抽象策略Abstract Strategy定义了策略对象的公共接口或抽象类规定了具体策略类必须实现的方法。具体策略Concrete Strategy实现了抽象策略定义的接口或抽象类包含了具体的算法实现。环境Context维护一个对策略对象的引用负责将客户端请求委派给具体的策略对象执行。环境类可以通过依赖注入、简单工厂等方式来获取具体策略对象。 实现 抽象策略 我们使用接口来实现抽象策略规定了支付的公共方法根据传入的用户名和支付金额进行结算。 package knowledege.designPattern.strategy.test1;import java.math.BigDecimal;public interface PayStrategy {void pay(String name, BigDecimal money); }具体策略 初始化微信和支付宝两种支付策略 1.AliPayStrategy package knowledege.designPattern.strategy.test1;import java.math.BigDecimal;public class AliPayStrategy implements PayStrategy{Overridepublic void pay(String name, BigDecimal money) {System.out.println([ name ]使用支付宝支付... money 元);} }2.WeChatPayStrategy package knowledege.designPattern.strategy.test1;import java.math.BigDecimal;public class WeChatPayStrategy implements PayStrategy{Overridepublic void pay(String name, BigDecimal money) {System.out.println([ name ]使用微信支付... money 元);} }环境 提供设置策略和执行策略的方法 package knowledege.designPattern.strategy.test1;import java.math.BigDecimal; public class PayContext {private PayStrategy payStrategy;public PayContext(){}public void setPayStrategy(PayStrategy payStrategy){this.payStrategy payStrategy;}public void executePayStrategy(String name, BigDecimal money){payStrategy.pay(name, money);} }使用简单工厂来获取具体策略对象 支付方式枚举 定义枚举并支持静态根据支付方式获取枚举 package knowledege.designPattern.strategy.test1;import lombok.AllArgsConstructor; import lombok.Getter;Getter AllArgsConstructor public enum PayWayEnum {PAY_ALI(01,支付宝),PAY_WE_CHAT(02,微信);public final String payWay;public final String payDesc;public static PayWayEnum getEnumByWay(String payWay){for(PayWayEnum enums: PayWayEnum.values()){if(enums.payWay.equals(payWay)){return enums;}}return null;} }策略工厂接口 public interface StrategyFactory {PayStrategy initStrategy(); }策略工厂实现 package knowledege.designPattern.strategy.test1;import java.util.Objects;public class StrategySimpleFactory {public static PayStrategy initStrategy(String payWay){PayWayEnum payWayEnum PayWayEnum.getEnumByWay(payWay);if (Objects.isNull(payWayEnum)) {return null;}PayStrategy strategy null;switch (payWayEnum) {case PAY_ALI:strategy new AliPayStrategy();break;case PAY_WE_CHAT:strategy new WeChatPayStrategy();break;}return strategy;} }测试使用 订单实体类 package knowledege.designPattern.strategy.test1;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;import java.math.BigDecimal; Data AllArgsConstructor NoArgsConstructor public class OrderTestDTO {Integer orderNum;String payPersonName;String payWay;BigDecimal payMoney; }对订单进行批量支付 模拟对订单进行批量支付 模拟获取一批订单循环订单进行支付 根据订单的支付方式获取支付枚举根据枚举使用工厂模式获取支付策略根据策略使用支付环境进行支付 package knowledege.designPattern.strategy.test1;import java.math.BigDecimal; import java.util.ArrayList; import java.util.List;public class test1 {public static void main(String[] args) {ListOrderTestDTO orderList initOrders();batchPay(orderList);}/*** 获取订单*/public static ListOrderTestDTO initOrders(){ListOrderTestDTO orderList new ArrayList();orderList.add(new OrderTestDTO(1,aaa,01,new BigDecimal(99)));orderList.add(new OrderTestDTO(2,aaa,02,new BigDecimal(20)));orderList.add(new OrderTestDTO(3,bbb,01,new BigDecimal(17)));orderList.add(new OrderTestDTO(4,ccc,02,new BigDecimal(19.88)));return orderList;}/*** 订单批量支付*/public static void batchPay(ListOrderTestDTO orderList){PayContext payContext new PayContext();orderList.forEach( order - {PayStrategy strategy StrategySimpleFactory.initStrategy(order.getPayWay());payContext.setPayStrategy(strategy);payContext.executePayStrategy(order.getPayPersonName(), order.getPayMoney());});} }结果 可以看到每笔订单都成功根据其支付方式支付了。 扩展一种支付方式银行卡支付 如果需要扩展一种支付方式才能看出策略工厂模式的真正优点。 下面我们模拟扩展一种支付方式银行卡支付 支付策略新增 package knowledege.designPattern.strategy.test1;import java.math.BigDecimal;public class CardStrategy implements PayStrategy{Overridepublic void pay(String name, BigDecimal money) {System.out.println([ name ]使用银行卡支付... money 元);} } 支付枚举新增 PAY_CARD(03,银行卡),工厂新增生产银行卡 case PAY_CARD:strategy new CardStrategy();break;重新测试 成功适配了银行卡支付改动较少又没有更改核心的支付逻辑符合开闭原则
http://www.hkea.cn/news/14322394/

相关文章:

  • 展示型网站系统微信小程序开发实例教程
  • 免费php网站源码表格网站怎么做的
  • 免费做视频网站哈尔滨模板建站哪个品牌好
  • 广州住房和建设局网站官网山东济南网站建设
  • 游泳池建设有专门的网站吗最近的新闻事件
  • 网站个人博客怎么做湖南人文科技学院官网首页
  • 怎么才能搜索到自己做的网站国外论文类网站有哪些方面
  • 衡阳市建设协会网站手机社区网站模板
  • 免费建网站 步骤超级软文网
  • 做网站的皮包公司爱站网能不能挖掘关键词
  • 深圳做app网站大展建筑人才网
  • 江门网站建设推广家装要去哪个公司装修
  • 有啥创意可以做商务网站的株洲seo
  • 东莞企业高端网站建设安卓开发工具手机版
  • 长春网站制作公司游戏广告联盟平台
  • 百度不更新网站张雪峰最不建议上的专业
  • 电子商务网站开发书代码统计网站
  • 牡丹江网站seo网站开发 荣誉资质
  • 东莞技术支持网站建设专家公司营业执照查询
  • 网站外链建设可以提升网站权重对还是错长春建站平台
  • 企业管理咨询网站模板泰安公司注册
  • 1网站免费建站免费营销网站制作模板
  • 旅游景区网站建设方案文档东莞洪梅网站建设
  • 网站空间后台密码网站后台怎么做alt标签
  • html5快速建站怎么把自己网站推广出去
  • 福州英文网站建设国外企业网络研究
  • 郴州网站策划做短视频网站收益
  • 网站建设与设计试题郑州新闻
  • 快速做课件的网站wordpress 权限控制
  • 织梦做网站视频教程在线网站建设哪个正规