gpt4 book ai didi

java - 用更通用的方式替换 elseif

转载 作者:行者123 更新时间:2023-11-30 07:44:56 26 4
gpt4 key购买 nike

我有这段代码:

@Override
public void inform(String data) {
if (data.equals(C.SubscriptionEvents.WINDOW_CLOSED)) {
File tempFolder = new File("temp");
File[] files = tempFolder.listFiles();
if (files != null) {
for (File f : files) f.delete();
}
} else if (data.equals(C.Controller.Commands.SELECT_MODE_VERTICES)) {
MainModel.setCurrentMode(Mode.VERTICES);
display.getInfoSection().repaint();
} else if (data.equals(C.Controller.Commands.SELECT_MODE_LINES)) {
MainModel.setCurrentMode(Mode.LINES);
display.getInfoSection().repaint();
} else if (data.equals(C.Controller.Commands.SELECT_MODE_SECTORS)) {
MainModel.setCurrentMode(Mode.SECTORS);
display.getInfoSection().repaint();
}
}

该方法获取一个字符串,它是一个命令名称。根据名称,它执行指定的行为。正如您所看到的,它开始有太多的 elseif(并且可能会更多)。此方法属于包之间共享的接口(interface),因此我决定将参数设为字符串。有没有更好的方法来避免在有很多命令时方法变得庞大(这也包括 switch case)?

最佳答案

您可以检查 Command 模式 https://www.baeldung.com/java-command-pattern但它可能需要相当广泛的重构,并使方法 inform() 接受类型为 Command

的对象

关于java - 用更通用的方式替换 elseif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52226910/

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