我正在处理一个并行继承层次结构,我有一个逐步重构的想法,并希望了解它是否有效或是否有更好的方法来实现它。
创建一个Handler类,其中包含实现所需特定行为的子项,例如CarHandler
包含子项vwHandler
,fordHandler
,bmwHandler
添加对所有组件的调用并对其进行重组,以便子项返回必要的对象。例如致电vwHandler.getDrive
将返回vwDrive.drive
的结果,致电vwHandler.getSeat
返回vwSeat.seat
)
重构其他类,以便它们提供一般功能而不是特定的功能,例如致电vwHandler.getDrive
将返回drive(vwSpec1, vwSpec2)
处理程序示例
public abstract class CarHandler
{
private Car car;
public Car getCar()
{
return car;
}
public Car setCar()
{
car = car;
}
public CarHandler(Car car)
{
this.car = car;
}
public Car getCar()
{
return car;
}
public void setCar(Car car)
{
this.car = car;
}
public void updateCar()
{
Globalizer.updateOnServer(car);
}
public abstract Drive getNewDrive();
public abstract Seat getNewSeat();
}
答案 0 :(得分:0)
我不太了解您的问题,因为我没有看到您的示例与并行继承层次结构的关系,但我不喜欢您的approch中受保护的现场汽车。
有关详细信息,请参阅我的回答here。接受的答案是如何在基类中封装行为的一个很好的例子。
答案 1 :(得分:0)
实际上,这种方法对我来说非常有效,我实现了前两个步骤,最终删除了几百行重复,并且很好地了解了将来如何进一步重构。我强烈推荐这种方法。