我有两个班级,Item
和SoldItem
。 SoldItem
继承自Item
添加某些属性,例如奖品,售罄等。
首先我创建一个Item
,当我卖掉它时,我想创建solditem
。这个设计是正确的吗?如果是的话我怎么能从item开始创建solditem?
答案 0 :(得分:2)
我会说这是对继承的不当使用。如果您需要通过某些与其是否已售出正交的功能将Item
多样化为子类,该怎么办?例如,如果您销售软件,则可以在物理介质上提供商品,可以下载,也可以订阅;如果您决定使用继承来建模这些,那么您已经有六个类。您添加的每个正交要素都会成为所需类别数的乘数。
更好的设计,包括组合,将有单独的Item
和Sale
类,以及两者之间的联系;然后,您可以向Item
类添加功能以获取相关Sale
(如果有)和vv。获取Item
Sale
(应该始终为非空值)。在这种情况下,思考关系而不是面向对象可能是一种更好的方法。
如果您只对已售商品感兴趣,请直接查看Sale
个对象,通过相关Item
获取商品信息。如果您对任何项目感兴趣,请获取Item
个实例,如果需要,请查询Sale
。