gpt4 book ai didi

java - 在多个 if 语句中调用正则表达式检查方法时使用哪种模式或方法?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:08:11 24 4
gpt4 key购买 nike

我在类里面创建了一个工厂模式。

在这个类中,我根据传入的 String 参数注入(inject)了实现 Command 接口(interface)的类。

工厂类

@Component
@RequiredArgsConstructor
public class CommandFactory {
private final ACommand aCommand;
private final BCommand bCommand;
private final CCommand cCommand;
private final DCommand dCommand;
private final ECommand eCommand;
private final FCommand fCommand;

public Command createCommand(String content) {
if (aCommand.isMatching(content)) {
return aCommand;
} else if (bCommand.isMatching(content)) {
return bCommand;
} else if (cCommand.isMatching(content)) {
return cCommand;
} else if (dCommand.isMatching(content)) {
return dCommand;
} else if (eCommand.isMatching(content)) {
return eCommand;
} else if (fCommand.isMatching(content)) {
return fCommand;
} else {
return null;
}
}

isMatching() 方法中有不同的正则表达式,我试图弄清楚应该如何处理这个传入的字符串。

我正在寻找一种更简洁的方法来摆脱这些连续的 if 语句。因为每当我在这个工厂中创建一个新类时,我都会添加另一个 if 语句。

最佳答案

也许 Stream 可以提供帮助?

Stream<Command> stream = Stream.of(aCommand, bCommand, cCommand ...);
return stream.filter(x -> x.isMatching(content)).findFirst().orElse(null);

现在每次添加新类时,只需在第一行添加一个新对象即可。

关于java - 在多个 if 语句中调用正则表达式检查方法时使用哪种模式或方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50836104/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com