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

本文关键字:继承 项目 其他 实例化 nhibernate | 更新日期: 2023-09-27 18:37:11

我有两个类,ItemSoldItemSoldItem继承Item添加一些属性,例如奖品、销售日期等。

首先我创建一个Item,当我出售它时,我想创建solditem。这种设计正确吗?如果是,我如何从项目开始创建已售项目?

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

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

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

如果您只对已售出的物品感兴趣,则可以直接查看Sale对象,通过相关Item获取物品信息。如果您对任何项目感兴趣,请获取一个Item实例,并在需要时查询它以获取Sale