Я перерабатываю некоторый код в проекте, над которым я работаю, и я столкнулся с большим оператором if/else if, который следует за форматом:
if (changer instanceof AppleChanger)
{
panel = new ApplePanel();
}
else if (changer instanceof OrangeChanger)
{
panel = new OrangePanel();
}
Теперь мой первый импульс состоял в том, чтобы реорганизовать его с помощью полиморфизма, чтобы он выглядел как
panel = changer.getChangerPanel();
Однако, к сожалению, пакет классов не имеет доступа к пакету панели.
Мой следующий импульс состоял в том, чтобы создать класс PanelChooser с перегруженным методом:
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;
}
Это хорошее решение или есть лучший способ решить эту проблему?