我已经存在一个包含许多属性和方法的订单类。我现在需要创建一个子订单类,它是订单类的子集。它不仅具有订单类所具有的许多字段,它还具有许多相同的计算方法,在某些地方可能有一两行差异。然后,订单类需要包含一个子订单对象列表。我将如何创建子类?我应该从订单类派生出来吗?
答案 0 :(得分:0)
如果子订单不共享订单的所有属性,我将不会从订单派生Suborder。
相反,创建一个具有共享行为和属性的公共基类,并从基类派生Order和Suborder。
答案 1 :(得分:0)
似乎是重构的情况......
尽管Order类很容易存在,但似乎需要将其某些属性和方法移动到OrderSubClass
如果两个类的一些属性和行为在某种程度上是常见的,那么创建公共基类(或接口)也可能是合适的。
一旦安排了上述内容,Order类就可以成为SubOrders的容器,这似乎是问题中指示的方向。
答案 2 :(得分:0)
Composite Pattern可以为您提供所需设计的提示。
但我会有这样的层次结构:
OrderBase
|--> MainOrder
|--> Suborder
或者如果MainOrder和Suborder足够不同,那么接口会更好用:
MainOrder <--- IOrder
Suborder <--- IOrder
但这不会分享实施。