请查看以下代码:
public class Vehicle
'Not very well designed. Contains properties and functions/subs for cars, buses, tractors, planes, drivers etc.
end class
我想重构代码,以便有一个超类(车辆)和许多子类。我希望这样做,因为我在进行更高优先级的工作。
如果我创建新类,那么将有两个Vehicle类,即重构的车辆和旧车辆。我认为最好的方法是为重构代码创建一个新的命名空间,例如company.app.businesslogiclayer.automobiles.refactoredcode,company.app.datalogiclayer.automobiles.refactoredcode。这是正确的方法吗?
答案 0 :(得分:1)
我认为您可以将现有的clas视为子类,因为它已经具有一些特定于类的功能,然后查看Extract Superclass重构。在这里,您将创建新的超类,然后将子类中的常用功能移动到超类。
Refactoring for Visual Basic有一个关于Extract Super Class的很好的部分,你可能会感兴趣。
答案 1 :(得分:1)
小心不要过度使用继承。 “司机”让我觉得你真的想要使用作曲。车辆有司机。类似地,使用合成可以更好地处理其他事情。例如,你可以拥有一辆可以达到200公里/小时的汽车,并且拥有一辆可以达到300公里/小时的汽车。真的不希望有不同的类。如果你有更复杂的东西,你可以有一个简单的int值或EngineBehaviour类。 (关键字:策略模式)另外一定要确保不在对象中实例化这样的复合对象,而是注入它们(关键字:依赖注入)。