Map+Java8函数式接⼝(解决⼤量if⽅法)
@Service
public class QueryGrantTypeService {
@Autowired
private GrantTypeSerive grantTypeSerive;
private final Map<String, Function<String, String>> grantTypeMap = new HashMap<>();
/**
* 初始化业务分派逻辑,代替了if-else部分
* key: 优惠券类型
* value: lambda表达式,最终会获得该优惠券的发放⽅式
*/
@PostConstruct
public void dispatcherInit() {
grantTypeMap.put("红包", resourceId -> dPaper(resourceId));
grantTypeMap.put("购物券", resourceId -> grantTypeSerive.shopping(resourceId));
grantTypeMap.put("vip会员", resourceId -> grantTypeSerive.vip(resourceId));
}
public String getResult(String resourceType, String resourceId) {
// Controller根据优惠券类型resourceType、编码resourceId 去查询发放⽅式grantType
Function<String, String> result = (resourceType);
if (result != null) {
// 传⼊ resourceId 执⾏这段表达式获得String型的grantType
return result.apply(resourceId);
}
return "查询不到该优惠券的发放⽅式";
}
resource和autowired注解的区别}
@Service
public class GrantTypeSerive {
public String redPaper(String resourceId) {
//红包的发放⽅式
return "每周末9点发放";
}
public String shopping(String resourceId) {
//购物券的发放⽅式
return "每周三9点发放";
}
public String vip(String resourceId) {
//qq会员的发放⽅式
return "每周⼀0点开始秒杀";
}
}
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论