I'm refactoring some code in a project I'm working on and I ran into a large if/else if statement that follows the format:

```
if (changer instanceof AppleChanger)
{
   panel = new ApplePanel();
}
else if (changer instanceof OrangeChanger)
{
   panel = new OrangePanel();
} 

```

Now my first impulse was to refactor it using polymorphism to have it appear like

```
panel = changer.getChangerPanel();

```

However unfortunately the class package doesn't have access to the panel package.

My next impulse was to create a PanelChooser class with an overloaded method:

```
PanelChooser.getPanel(changer);

//Overloaded Method
public Panel getPanel(OrangeChanger changer)
{
   Panel orangePanel = new OrangePanel();
   return orangePanel;
}
public Panel getPanel(AppleChanger changer)
{
   Panel applePanel = new ApplePanel();
   return applePanel;
}

```

Is this a good solution or is there a better way to solve this?