I'm dealing with a Parallel Inheritance Hierarchy and I have an idea for a step by step refactoring and would like opinions on whether it will work or whether there is a better way to do it.
Create a Handler class with children that implement the specific behavior required e.g
CarHandler
with childrenvwHandler
,fordHandler
,bmwHandler
Add calls to all the components and restructure it so that the children return the objects neccessary. e.g. Call
vwHandler.getDrive
will return the result ofvwDrive.drive
, callvwHandler.getSeat
returnsvwSeat.seat
)Refactor the other classes so that they provide general functionality rather than specific e.g. Call
vwHandler.getDrive
will returndrive(vwSpec1, vwSpec2)
Example of Handler
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();
}