作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我面临以下情况:
例如我有一个条目:
Apple cake 应该映射到枚举 APPLE_CAKE
因此,在调用 valueOf
之前,这涉及到字符替换等。由于我将数据库实体映射到 Java 对象,因此我通过反射来完成此操作。
如果找到枚举字段并读取数据库值,我需要调用适当的构造函数。我当前的解决方案是使用标记接口(interface) Entity
,我已在其中记录了实现自定义静态方法 fromString(String)
。
我不喜欢这个想法的是,实现者没有被迫实现静态方法。于是我就想,有没有一种合适的创作模式可以适用于这种情况呢?
最佳答案
指定实例创建接口(interface)的最佳模式是 Abstract Factory Pattern
创建一个名为 EntityFactory
或类似接口(interface)的额外接口(interface)。为每个Entity
类型实现一个具体工厂。使用这些工厂实例来创建Entity
实例。
public interface EntityFactory<T extends Entity>
T create(String str);
}
关于java - 通过反射构造枚举的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12116123/
我是一名优秀的程序员,十分优秀!