nhibernate实例化从其他项继承的项

时间:2012-06-15 08:04:49

标签: c# nhibernate fluent-nhibernate

我有两个班级,ItemSoldItemSoldItem继承自Item添加某些属性,例如奖品,售罄等。

首先我创建一个Item,当我卖掉它时,我想创建solditem。这个设计是正确的吗?如果是的话我怎么能从item开始创建solditem?

1 个答案:

答案 0 :(得分:2)

我会说这是对继承的不当使用。如果您需要通过某些与其是否已售出正交的功能将Item多样化为子类,该怎么办?例如,如果您销售软件,则可以在物理介质上提供商品,可以下载,也可以订阅;如果您决定使用继承来建模这些,那么您已经有六个类。您添加的每个正交要素都会成为所需类别数的乘数。

更好的设计,包括组合,将有单独的ItemSale类,以及两者之间的联系;然后,您可以向Item类添加功能以获取相关Sale(如果有)和vv。获取Item Sale(应该始终为非空值)。在这种情况下,思考关系而不是面向对象可能是一种更好的方法。

如果您只对已售商品感兴趣,请直接查看Sale个对象,通过相关Item获取商品信息。如果您对任何项目感兴趣,请获取Item个实例,如果需要,请查询Sale