代码之家  ›  专栏  ›  技术社区  ›  supercat

使用Vbex2005重构组合的继承

  •  0
  • supercat  · 技术社区  · 14 年前

    我有一个类,我写了相当早在我的vb.net编程经验,继承了另一个类,它真的应该组成。基类是一个相对通用的基于嵌套字典的集合;我们把后代的a级车叫做“汽车”。

    现在有很多代码像“我的车!Color.st=“Red”'(我使用通用集合而不是实际属性,以便于与VB6中编写的代码进行数据交换,并便于对汽车进行比较;给定三辆车X,Y,Z,我可以检测到X和Y之间的任何变化,并将这些变化应用到Z)。

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

    1 回复  |  直到 14 年前
        1
  •  1
  •   Carl Manaster pakore    14 年前

    你可以先说Car有一个功能(或方法;不确定的vb.net术语)来获取它的集合-该函数最初将返回 this self ,或vb称之为的。

    现在将所有直接引用到Car as Collection的内容替换为 Car.getCollection() ,无论是车内还是车外。

    getCollection() ,并停止从集合继承。如果您在步骤2中遗漏了任何引用,那么此时它们将显示为编译错误。修复它们,重构就完成了。