else 策略模式去掉if_策略模式 消除if else

该博客介绍了如何通过策略模式来重构冗长的switch-case语句,提高代码的可读性和可维护性。示例中展示了如何定义策略接口、实现不同逻辑的策略类,并利用Spring的组件扫描自动加载新的策略。这种方法使得新增或修改逻辑时无需改动原有代码,遵循了开闭原则。
摘要由CSDN通过智能技术生成

//type为上文的参数

switch (type){

case 2:

//逻辑处理 很长 看着难受

break;

case 3:

//逻辑处理

break;

case 4:

//逻辑处理

break;

case 5:

//逻辑处理

break;

default:

break;

}

使用策略模式:定义接口  实现类 以及获取具体策略的类

public interface Strategy {

Type getType();

T doHandle(args...);

}

@Component

public class AStrategy implements Strategy {

@Override

public Type getType() {

return TypeA;

}

@Override

public T doHandle(args...) {

//具体逻辑

return A;

}

}

@Component

public class BStrategy implements Strategy {

@Override

public Type getType() {

return TypeB;

}

@Override

public T doHandle(args...) {

//具体逻辑

return B;

}

}

//第一种 有新增的策略启动会自动加载进去

@Component

public class StrategyHandler implements ApplicationContextAware{

private static Map map=new HashMap<>();

private static Map strategyMap=new HashMap<>();

@Override

public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {

//根据接口类型返回相应的所有bean

map = applicationContext.getBeansOfType(Strategy.class);

}

public static Map getMap() {

if(map == null || map.isEmpty()){

return null;

}

for(String key: map.keySet()){

Object obj = map.get(key);

if(!(obj instanceof Strategy)){

continue;

}

Strategy handler=(Strategy)obj;

strategyMap.put(handler.getType().getCode(),handler);

}

return strategyMap;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值