我有一个类,我写了相当早在我的vb.net编程经验,继承了另一个类,它真的应该组成。基类是一个相对通用的基于嵌套字典的集合;我们把后代的a级车叫做“汽车”。
现在有很多代码像“我的车!Color.st=“Red”'(我使用通用集合而不是实际属性,以便于与VB6中编写的代码进行数据交换,并便于对汽车进行比较;给定三辆车X,Y,Z,我可以检测到X和Y之间的任何变化,并将这些变化应用到Z)。
有没有什么好的方法来重构代码以使用组合而不是继承?“Car”对象应该包装哪些属性/方法,哪些应该通过数据对象属性访问?是否应该在汽车和收集对象之间定义加宽转换?做这样的重构有什么问题吗?
你可以先说Car有一个功能(或方法;不确定的vb.net术语)来获取它的集合-该函数最初将返回 this self ,或vb称之为的。
this
self
现在将所有直接引用到Car as Collection的内容替换为 Car.getCollection() ,无论是车内还是车外。
Car.getCollection()
getCollection() ,并停止从集合继承。如果您在步骤2中遗漏了任何引用,那么此时它们将显示为编译错误。修复它们,重构就完成了。
getCollection()