用于从模板生成对象的JavaEJB3.1模式
我正在搜索从模板对象生成对象的设计模式。在我的游戏中,我有不同种类的项目,它们将由模板对象生成
目前我通过继承解决了这个问题,每个模板实体都实现了以下方法:
public Item generate(EntityManager em);
我的继承结构是:
ItemTemplate -> creates an Item
|_ ArmorTemplate -> creates and Armor
|_ WeaponTemplate -> creates an Weapon
|_ ....and more ....
当我创建一个项目时,我将实体管理器传递给模板,并得到一个持久化对象。 例如,一件盔甲模板会给我一件持久的盔甲等等
如果项目生成需要任何特定的实体,我必须在生成方法中进行查找。我想用一个基于容器的解决方案来解决这个问题,在这个解决方案中,我可以注入所需的EJB,而不必通过创建工作流传递实体管理器
从Hibernate中,我得到了一个模板对象列表,我不想执行instanceof来调用正确的工厂方法
我目前的解决方案有效,但感觉不是很优雅。任何输入都可以。;-)
提前谢谢。 你好,m
# 1 楼答案
不可能将EJB注入到模板对象中,只要它们是具有Java EE的域对象:
Inject EJB into domain object with Java EE 6
弹簧可以:
http://java.dzone.com/articles/domain-object-dependency-injection-with-spring
不过,我可能会尝试将模板域对象与对象分发部分分离。(仅就我的理解而言:ArmorTemplate是一种装甲,有多种不同的属性,每个ArmorItem都是一个ArmorTemplate的一个实例,一个模板可以有多个项目)
这里有一个建议。复杂的通用部分是使ArmorItem只能通过ArmorTemplate构建,并且您可以从该模板访问特定属性而无需强制转换