通过反射构造Enums的设计模式

时间:2012-08-24 20:23:17

标签: java design-patterns constructor enums

我面临以下情况:

  • 数据库条目将转换为枚举
  • 这些条目与Enum常量
  • 不同

例如,我有一个条目:

Apple cake 应该映射到枚举APPLE_CAKE

因此,在我调用valueOf之前,这涉及到字符替换等。由于我将数据库实体映射到Java对象,我通过反射来完成。

如果找到枚举字段并且读取了数据库值,我需要调用相应的构造函数。我目前的解决方案是使用标记接口Entity,我已将记录下来以实现自定义静态方法 fromString(String)

我不喜欢这个想法是实现者不必强制实现静态方法。所以我在想,是不是有适合的创作模式可以适用于这种情况?

1 个答案:

答案 0 :(得分:1)

为实例创建指定接口的最佳模式是Abstract Factory Pattern

创建一个名为EntityFactory或类似的额外界面。为每个Entity类型实现具体工厂。使用这些工厂实例创建Entity实例。

public interface EntityFactory<T extends Entity>
    T create(String str);
}