在client请求端,根本看不到那么多的if else判断,只需要传入对应的策略方式即可,这里我们维护了一个策略缓存map,在直接调用的ShareFactory获取策略的时候就直接是从换种获取策略类对象。 这就已经达到了行为解偶的思想。同时也避免了长串的if else 判断。 优点: 算法策略可以自由实现切换 扩展性好,加一个策略,只需要...
1、在业务层使用 if-else 判断类型,去执行不同的业务逻辑。 2、使用工厂模式+策略设计模式,同时结合SpringBoot注解选择不同的策略,实现不同的业务逻辑。 代码示例 定义枚举 @AllArgsConstructor@GetterpublicenumSaleOrderEnum{SHOP_SALE_ORDER("10001","店铺业务零售单"),SUPPLY_SALE_ORDER("10002","供应链直销单"...
当if else的条件少的话,代码可阅读性及逻辑不影响阅读和扩展。一旦if else过多的话会导致逻辑比较混乱,不易扩展并且很容易出错。 实现方案: 1、定义一个@HandlerType注解,一个value属性,其值对应 if 条件的值 2、定义一个接口或者抽象类,抽AbstractHandler,抽象逻辑处理方法handler方法交给具体的业务实现 3、根据...
一旦代码中if-else过多,就会大大的影响其可读性和可维护性。其实,if-else是有办法可以消除掉的,其中比较典型的并且使用广泛的就是借助策略模式和工厂模式,准确的说是利用这两个设计模式的思想,彻底消灭代码中的if-else。本文,就结合这两种设计模式,介绍如何消除if-else,并且,还会介绍如何和Spring框架结合,这...
下面开始进行代码优化,采用策略模式解决上面if…else。为了安全起见,首先将各个判断语句间的代码从各个分支中剥离出来,然后进行测试,看看输出是否有问题,剥离后的代码如下所示: if(condition1){ doSomething1() }else if(condition2){ doSomething2() }else if(condition3){ ...
策略模式+Spring配置类优化多if..else思路 图示# 1. 现状# 场景: 假设设备上报不同类型的消息,我们要对不同类型的消息做不同的处理。如果我们通过if..else的方式处理的话会显得比较冗余。 例如: if("alarmEvent".equals(msg)){ // 处理告警消息逻辑 ... }else if("deviceBase".equals(msg)){ // 处理...
4、用策略模式改写if-else 假设我们要处理一个office文件,分为三种类型 docx、xlsx、pptx,分别表示Word文件、Excel文件、PPT文件,根据文件后缀分别解析。 4.1 常规写法 publicclassOfficeHandler{publicvoidhandleFile(StringfilePath){if(filePath ==null){return; ...
1.这段代码是由冗长的if-else分支判断组合起来的,且if-else的逻辑也比较混乱,然后这段代码把4种Hsf的接口检查都耦合在了一起,没有扩展性。后续增加任何功能,都需要在原来耦合的代码里添加代码,有可能会影响原有功能。 2.这段代码没有做到开闭原则,一段良好的代码需要做到对扩展开发,对修改关闭。
策略模式就像外卖菜单,让你在不同的算法之间轻松选择,无需担心复杂的 if-else 逻辑。通过策略模式,你可以将复杂的业务逻辑分解为独立的策略类,使代码更加灵活、可维护,并显著提升系统的扩展性。无论是外卖小哥在面对丰富的菜单选项,还是开发者在处理复杂的算法时,策略模式都能提供高效、优雅的解决方案,让工作...