Java使用函数式接口处理if-else的策略模式
Posted boonya
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java使用函数式接口处理if-else的策略模式相关的知识,希望对你有一定的参考价值。
目录
常规策略模式示例
public abstract class Strategy
abstract void doSomething();
// 策略A
public class AStrategy extends Strategy
@Override
void doSomething()
// 策略B
public class BStrategy extends Strategy
@Override
void doSomething()
函数式接口策略
定义函数方法
@Slf4j
public class Functions
public String strategyA(String resourceId)
log.info(resourceId);
return "A";
public String strategyB(String resourceId)
log.info(resourceId);
return "B";
public String strategyC(String resourceId)
log.info(resourceId);
return "C";
函数策略调用
@Slf4j
public class FunctionStrategy
private Functions functions = new Functions();
/**
* 函数式表
*/
private Map<String, Function<String,String>> strategyMap = new HashMap<>();
/**
* 初始化函数匹配策略
*/
public void init()
strategyMap.put("A",resourceId->functions.strategyA(resourceId));
strategyMap.put("B",resourceId->functions.strategyB(resourceId));
strategyMap.put("C",resourceId->functions.strategyC(resourceId));
/**
* 获取结果
* @param resourceId
* @return
*/
public String getResult(String resourceId)
Function<String,String> result = strategyMap.get(resourceId);
if(null != result)
return result.apply(resourceId);
else
new RuntimeException("错误调用");
return null;
public static void main(String[] args)
FunctionStrategy functionStrategy = new FunctionStrategy();
functionStrategy.init();
log.debug("->",functionStrategy.getResult("A"));
以上是关于Java使用函数式接口处理if-else的策略模式的主要内容,如果未能解决你的问题,请参考以下文章
还在用策略模式解决 if-else?Map + 函数式接口就行了。。。
还在用策略模式解决 if-else?Map+函数式接口方法才是YYDS!
#yyds干货盘点#还在用策略模式解决 if-else?Map+函数式接口方法才是YYDS!
还在用策略模式解决 if-else?Map+函数式接口方法才是YYDS!