使用Vbex2005重构对组合的继承

时间:2010-07-07 17:31:19

标签: vb.net inheritance refactoring composition

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

现在有很多代码可以执行像'MyCar!Color.st =“Red”'这样的事情(我使用泛型集合而不是真正的属性来促进与用VB6编写的代码进行数据交换,并且还便于比较汽车;给定三辆汽车X,Y,Z,我可以检测X和Y之间的任何变化,并将这些变化应用于Z)。

有没有很好的方法来重构代码以使用组合而不是继承? “Car”对象应该包装哪些属性/方法,哪些属性/方法应该通过数据对象属性访问?是否应该在汽车和收集对象之间定义加宽转换?在进行这样的重构时是否有任何陷阱?

1 个答案:

答案 0 :(得分:1)

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

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

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