我面临以下情况:
例如,我有一个条目:
Apple cake 应该映射到枚举APPLE_CAKE
因此,在我调用valueOf
之前,这涉及到字符替换等。由于我将数据库实体映射到Java对象,我通过反射来完成。
如果找到枚举字段并且读取了数据库值,我需要调用相应的构造函数。我目前的解决方案是使用标记接口Entity
,我已将记录下来以实现自定义静态方法 fromString(String)
。
我不喜欢这个想法是实现者不必强制实现静态方法。所以我在想,是不是有适合的创作模式可以适用于这种情况?
答案 0 :(得分:1)
为实例创建指定接口的最佳模式是Abstract Factory Pattern
创建一个名为EntityFactory
或类似的额外界面。为每个Entity
类型实现具体工厂。使用这些工厂实例创建Entity
实例。
public interface EntityFactory<T extends Entity>
T create(String str);
}