通过反射构造枚举的java设计模式
我面临以下情况:
- 数据库条目将转换为枚举
- 这些条目与枚举常量不同
例如,我有一个条目:
苹果蛋糕应该映射到枚举APPLE_CAKE
因此,在调用valueOf
之前,这涉及到字符替换等。因为我将数据库实体映射到Java对象,所以我通过反射来实现
如果找到枚举字段并读取数据库值,我需要调用相应的构造函数。我目前的解决方案是使用一个标记接口Entity
,我已经记录了这个接口来实现一个定制的静态方法fromString(String)
我不喜欢这个想法的地方是,实现者没有被迫实现静态方法。所以我在想,难道没有一个合适的创作模式可以应用于这种情况吗
# 1 楼答案
为实例创建指定接口的最佳模式是Abstract Factory Pattern
制作一个名为
EntityFactory
或类似的额外接口。为每种Entity
类型实现一个具体的工厂。使用这些工厂实例来创建Entity
实例