有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

通过反射构造枚举的java设计模式

我面临以下情况:

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

例如,我有一个条目:

苹果蛋糕应该映射到枚举APPLE_CAKE

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

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

我不喜欢这个想法的地方是,实现者没有被迫实现静态方法。所以我在想,难道没有一个合适的创作模式可以应用于这种情况吗


共 (1) 个答案

  1. # 1 楼答案

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

    制作一个名为EntityFactory或类似的额外接口。为每种Entity类型实现一个具体的工厂。使用这些工厂实例来创建Entity实例

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