Map+函数式接口替代 多个if-else逻辑

Map+函数式接口 是Java8的新特性lambda表达式

  • 判断条件放在key中

  • 对应的业务逻辑放在value中
    这样子写的好处是非常直观,能直接看到判断条件对应的业务逻辑
     

业务场景,当你做大型项目时,常常因为一个方法里根据不同的角色去做不同的处理

当登录人组织机构结构很复杂时,也许你会用多个if else去判断,然后执行不同的逻辑,写完你才发现,一个方法可以达到一两百行,修改的时候头疼不已。

@Service
public class QueryRoleService {

    @Autowired
    private RoleSerive roleSerive;
    private Map<String, Function<String,String>> roleMap=new HashMap<>();

    /**
     *  初始化业务分派逻辑,代替了if-else部分
     *  key:
     *  value: lambda表达式
     */
    @PostConstruct
    public void dispatcherInit(){
        roleMap.put("管理员",id->roleSerive.adminPression(id));
        roleMap.put("部门领导",id->roleSerive.departPresion(id));
        roleMap.put("普通员工",id->roleSerive.employeePression(id));
    }

    public String getResult(String orgCodeName,String orgCode){
        Function<String,String> result= roleMap.get(orgCodeName);
        if(result!=null){
            return result.apply(orgCode);
        }
        return "";
    }
}
@Service
public class RoleSerive {

    public String adminPression(String id){
        return "管理员权限业务逻辑";
    }
    public String departPresion(String id){
        return "部门领导权限业务逻辑";
    }
    public String employeePression(String id){
        return "员工权限业务逻辑";
    }
}

 @PostMapping(value = "/role")
	 public Result<?> role(String orgCodeName,String orgCode) {
		 queryRoleService.getResult(orgCodeName,orgCode);
		 return Result.OK("添加成功!");
	 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值