0

我有一个类,我很早就在我的 vb.net 编程经验中编写了它,它继承自另一个它确实应该组成的类。基类是一个相对通用的基于字典的嵌套集合;让我们将后代类称为“汽车”。

现在有很多代码可以做类似'MyCar!Color.st = "Red"'的事情(我使用通用集合而不是真实属性来促进与用VB6编写的代码进行数据交换,也便于比较汽车;给定三辆车 X、Y、Z,我可以例如检测 X 和 Y 之间的任何变化并将这些变化应用于 Z)。

有什么好方法可以重构代码以使用组合而不是继承?“汽车”对象应该包装哪些属性/方法,哪些应该通过数据对象属性访问?是否应该在汽车和集合对象之间定义扩大转换?进行此类重构时是否有任何问题?

4

1 回答 1

1

你可以先说 Car 有一个函数(或方法;不确定 vb.net 术语)来获取它的集合 - 并且该函数最初会返回this(或self,或任何 vb 调用它)。

现在将 Car-as-Collection 的所有直接引用替换为Car.getCollection()Car 类内部和外部的所有直接引用。

最后,进行更改:创建一个成员变量,对其进行初始化,将其从 中返回getCollection(),并停止从 Collection 继承。如果您在第 2 步中遗漏了任何引用,此时它们将显示为编译错误。修复它们,你的重构就完成了。

于 2010-07-08T13:40:29.550 回答