我有一個源於Hibernate模型的通用OO設計問題。具有子類唯一性和多態的Java引用類型
例
付款 - 庫(超型)
@Entity
@Table(name = "PAYMENT")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
@DiscriminatorValue("BASE")
public class Payment{
private Product product;
private Date date;
private Customer Customer;
getters/setters
}
信用卡式
@Entity
@DiscriminatorValue("CC")
public class CreditCard extends Payment {
private String Account
getters/setters
}
現金
@DiscriminatorValue("CASH")
public class Cash extends Payment {
private String Paper
private String Coins
getters/setters
}
使用Hibernate不是問題(每CLAS表等級)。由於Hibernate能夠接受通用對象實例並仍然保留正確的實例。
我的問題是圍繞在代碼的其他部分polymorhically使用付款。由於每個子類都添加了唯一的實例字段,這意味着我需要在Payment上存儲這些子類字段,以便購買多態的好處。這似乎並不正確,因爲每次我向子類添加新字段或新增付款類型時,我都會回過頭來將metohods添加到付款中。
是否有我缺少的東西,我可以使用的Java固有的模式或特性?
感謝
-J
謝謝,我明天會修補這個。我也想知道是否需要現在更改我的Hibernate映射。如果我找不到一個簡單的解決方案,我可能會把它扔到休眠板上。再次感謝。 – user943583