0

我有两个班,ItemSoldItemSoldItem通过Item添加一些属性(例如 Prize、solddate 等)继承。

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

4

1 回答 1

2

我会说这是对继承的不当使用。如果您需要Item通过与是否已售出正交的某些功能将其多样化为子类怎么办?例如,如果您销售软件,一个项目可以通过物理媒体运送,它可以是可下载的,也可以是订阅;如果您决定也使用继承对它们进行建模,那么您已经有了六个类。您添加的每个正交特征都会成为您需要的类数量的乘数。

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

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

于 2012-06-15T08:13:29.237 回答