当前位置 :首页 >> 网红

Spring boot 运用策略模式付诸,避免多次使用if

2023-04-29   来源 : 网红

相同的缴交手段,不能来进行缴交"); return null; } return payStrategyMap.get(payStrategyEnum.getClassName()); }}粘贴编码

这里车间类的形式化是利用了Spring桶内的妥善处理方式则,如果有多种类同时构建了某个以太网,那么可以应用于Map集合接收,Map相同的泛型,String是Bean地名,PayStrategy是每个明确构建类,这样我们就可以应用于Bean种类去选定明确的手段类了,然后建立一个缴交手段逻辑系统去监管这些Bean地名。同时,也可以将Bean地名与客户端假设的种类来进行关联。

缴交手段逻辑系统类/** * 缴交手段种类 */public enum PayStrategyEnum { WECHAT_PAY("wechat","wechatPayStrategy","微信缴交"), ALIPAY("alipay","alipayStrategy","缴交宝缴交") ; /** * 缴交手段code */ private String code; /** * bean地名 */ private String className; /** * 接收者 */ private String info; PayStrategyEnum(String code,String className,String info){ this.code=code; this.className=className; this.info=info; } public String getCode() { return code; } public String getClassName() { return className; } public String getInfo() { return info; }}粘贴编码

上面逻辑系统类中code推选的是客户端假设的种类(例如我从侧边接收到的缴交type,这个type可以是这个code),className;也,指的是每种手段的bean地名,info是推选每种手段的以下内容

缴交手段正则表达式/** * 缴交手段正则表达式 */@Componentpublic class PayStrategyContext { @Autowired private PayStrategyFactory payStrategyFactory; /** * 缴交执行 * @param payDTO 缴交匹配 * @return */ public boolean payHandle(PayDTO payDTO){ //将某也就是说的倍数变换变成明确的逻辑系统。这里是根据payDTO的type字段相同逻辑系统的code来进行变换 Optional payStrategyEnumOptional = Arrays.stream(PayStrategyEnum.class.getEnumConstants()) .filter((e) -> e.getCode().equals(payDTO.getType())).findAny(); if(!payStrategyEnumOptional.isPresent()){ System.out.println("匹配不到明确缴交手段"); return false; } PayStrategyEnum payStrategyEnum = payStrategyEnumOptional.get(); PayStrategy payStrategy = payStrategyFactory.getPayStrategy(payStrategyEnum); //来进行payDto匹配的妥善处理..... boolean pay = payStrategy.pay(); //缴交后的记录下来妥善处理.. return true; }}粘贴编码pageDto类/** * 缴交DTO */public class PayDTO { /** * 缴交种类 */ private String type; /** * 缴交手续费 */ private BigDecimal payMoney; /** * ........... */ public String getType() { return type; } public void setType(String type) { this.type = type; } public BigDecimal getPayMoney() { return payMoney; } public void setPayMoney(BigDecimal payMoney) { this.payMoney = payMoney; }}粘贴编码

这个手段正则表达式,则是选择手段的入口,这里会来进行匹配的妥善处理,将这里我就将pageDTO类中的type字符串变换变成相同的逻辑系统类。到这里应用于手段的系统的编所写即使如此完变成了,比如说来进行编所写客户端的编码

客户端编码缴交的系统@RestController@RequestMapping("pay")public class PayController { @Autowired private PayStrategyContext payStrategyContext; @PostMapping public boolean pay(@RequestBody PayDTO payDTO){ //这里因为毛毛。。就没再加Service层了,并不需要在的系统妥善处理 return payStrategyContext.payHandle(payDTO); }}粘贴编码真实感 新所需

先前新增一个中国银联的缴交方式则,我们只需要加到中国银联的缴交手段类和加到中国银联的缴交逻辑系统需构建

加到中国银联的缴交手段类/** * 中国银联缴交(这里忽略我重所写了Bean的当前命名) */@Component("unionPayStrategy")public class UnionPayStrategyImp implements PayStrategy { /** * 中国银联缴交 * @return */ @Override public boolean pay() { //来进行中国银联的缴交 System.out.println("来进行中国银联的缴交形式化"); return true; }}粘贴编码在逻辑系统类中加到中国银联的缴交逻辑系统/** * 缴交手段种类 */public enum PayStrategyEnum { WECHAT_PAY("wechat","wechatPayStrategy","微信缴交"), ALIPAY("alipay","alipayStrategy","缴交宝缴交"), UNION_PAY("unionpay","unionPayStrategy","中国银联缴交") ; /** * 缴交手段code */ private String code; /** * bean地名 */ private String className; /** * 接收者 */ private String info; PayStrategyEnum(String code,String className,String info){ this.code=code; this.className=className; this.info=info; } public String getCode() { return code; } public String getClassName() { return className; } public String getInfo() { return info; }}粘贴编码构建真实感

以上是我应用于Spring boot 借助手段的系统构建的真实感,如果有误人子弟的以前,望在华尔街日报一区说明。

无锡男科医院哪家好
石家庄白癜风医院排行榜
消化不良吃什么好
肌肉拉伤吃什么药止痛效果好
咸阳白癜风医院哪家最好
ERP要俗话说了?

了,还好,下一代来了。在MySAP.com之前,2004年,SAP又发行有了ECC和NetWeer。这个原版证明:我SAP也不是无所需,我只认真这些整体(ECC就是大新公司整体接口的字面...

友情链接