假设我有一个像这样的对象层次结构:
帐户 > 网站 > 供应
Account 是一家实际的公司,Site 是他们拥有的建筑物,Supply 是一个ElecSupply
或GasSupply
。Supply 永远不会被实例化,理论上可能是一个抽象类。
我正在使用 Objectify 进行持久化,并且有一个页面显示每个站点的供应列表,无论它们是ElecSupply
还是GasSupply
.
现在我正在实现GWT 编辑器框架并且遇到了这个多态实体的问题。如何为这样的对象实现一个编辑器和一组子编辑器?
@Entity
public class Supply implements Serializable
{
@Id
protected Long id;
@Embedded
protected List<BillingPeriod> billingPeriods = new ArrayList<BillingPeriod>();
public Supply()
{
}
// ...
}
子类:(ElecSupply 有 5 个独特的字段,而 GasSupply 只有一个)
@Subclass
public class ElecSupply extends Supply implements Serializable
{
private String profile;
private String mtc;
private String llf;
private String area;
private String core;
public ElecSupply()
{
}
}
@Subclass
public class GasSupply extends Supply implements Serializable
{
private String mpr;
public GasSupply()
{
}
// ...
}
所以我想知道是否有人对这种结构有任何经验?我尝试为 and 制作单独的编辑器ElecSupply
,GasSupply
然后将它们显示或隐藏为编辑页面的一部分。
我正在考虑的另一种方法是使用单个编辑器(用于 Supply),然后根据我们正在编辑的对象类型加载不同的子编辑器。
任何光棚将不胜感激。