我正在对我正在处理的一些代码进行一些重构。
我有一个bean集合(使用Hibernate从数据库中检索但它在这里不相关)。这些bean看起来像这样(为了演示,模型已被简化):
public class MyBean()
{
private int id;
private String key;
private String label;
// Getters and setters
}
它们存储在Map<Integer, MyBean>
中,其中密钥为MyBean
id。
另一方面,我有一个enum,来自外部lib,不可编辑。它看起来像这样:
public enum ExternalEnum
{
FIRST_VALUE("FirstValue"),
SECOND_VALUE("SecondValue"),
THIRD_VALUE("ThirdValue");
// Constructor and getter
}
目前,基本上,绑定是这样完成的:
Map<Integer, MyBean> myBeans = retrieveFromDBThroughDAO();
ExternalEnum eeValue = fetchValueFromSomewhere();
switch (eeValue)
{
case FIRST_VALUE:
return myBeans.get(0);
case SECOND_VALUE:
return myBeans.get(1);
case THIRD_VALUE:
return myBeans.get(2);
default: // In case of an unexpected modification of the enum
return myBeans.get(0);
// I know, case FIRST_VALUE is useless but it's for being clearer
}
我在考虑将绑定外包在像
这样的属性文件中my.enum.binding.first_value=0
my.enum.binding.second_value=1
my.enum.binding.third_value=2
my.enum.binding.default=0
并以通用方式阅读。
您如何看待我的解决方案?你认为它可以通过其他方式改进吗?
谢谢你们。
答案 0 :(得分:0)
那么你可以创建一个由将处理Enum的retrieveFromDBThroughDAO()返回的自定义类,它的映射方式仍然可以通过外部配置完成。
但是,这将集中所有关于如何将枚举映射到该类的ID的变化。