gpt4 book ai didi

java - 减少开关的案例数

转载 作者:行者123 更新时间:2023-12-02 15:19:00 25 4
gpt4 key购买 nike

我有以下一段代码。它是一种工厂函数,可以根据类型检索编写器的实例。请注意,该类型是一个 enum

public Writer getWriter(WriterTypeEnum type){
switch(type){
case A: new AWriter() break;
case B: ... break;
case C: ... break;
...
}
}

问题是我有大约 30 个 case。我能做些什么来减少它们或根本不实现它们?

我过去使用策略模式解决过类似的情况,但现在我面临着整个应用程序中使用的旧 enum。另一个问题是我无法将 spring bean 注入(inject)到这个枚举中。 switch case 中的一些实例是 bean

WriterTypeEnum 有一个来自 UI 的 ID,我必须根据该 ID 确定正确的实例。

最佳答案

你可以设置你的枚举有一个抽象方法

public abstract Writer getWriter();

然后,您的所有实例都必须实现该方法,例如

public enum YourEnum{
FIRST(){
public Writer getWriter(){
return null;
}
}, ... // other enums

public abstract Writer getWriter();

}

或者如果有重复的语句,你可以省略 switch 中的 break

关于java - 减少开关的案例数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38634073/

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