我有两个班,Item
和SoldItem
。SoldItem
通过Item
添加一些属性(例如 Prize、solddate 等)继承。
首先我创建一个Item
,当我卖掉它时我想创建solditem
。这个设计正确吗?如果是,我如何从项目开始创建已售商品?
我有两个班,Item
和SoldItem
。SoldItem
通过Item
添加一些属性(例如 Prize、solddate 等)继承。
首先我创建一个Item
,当我卖掉它时我想创建solditem
。这个设计正确吗?如果是,我如何从项目开始创建已售商品?
我会说这是对继承的不当使用。如果您需要Item
通过与是否已售出正交的某些功能将其多样化为子类怎么办?例如,如果您销售软件,一个项目可以通过物理媒体运送,它可以是可下载的,也可以是订阅;如果您决定也使用继承对它们进行建模,那么您已经有了六个类。您添加的每个正交特征都会成为您需要的类数量的乘数。
一个更好的设计,包括组合,将有单独的Item
和Sale
类,以及两者之间的链接;然后您可以向Item
该类添加功能以获取相关的Sale
(如果有)和 vv.,获取Item
of Sale
(应始终为非空)。在这种情况下,考虑关系而不是面向对象可能是一种更好的方法。
如果您只对已售商品感兴趣,则可以Sale
直接查看对象,通过相关的Item
. 如果您对任何项目感兴趣,请获取一个Item
实例,并在需要时查询它以获取Sale
.