Мне говорили на каком-то этапе в университете (и впоследствии читали в 15 местах), что использование instanceof
должно использоваться только как "последнее средство". Имея это в виду, кто-нибудь может сказать, если следующий код, который у меня есть, - последнее средство. Я посмотрел на переполнение стека, но не могу найти аналогичный сценарий - возможно, я пропустил его?
private void allocateUITweenManager() {
for(GameObject go:mGameObjects){
if (go instanceof GameGroup) ((GameGroup) go).setUITweenManager(mUITweenManager);
}
}
где
-
mGameObjects
- это массив, только некоторые из которыхGameGroup
type -
GameGroup
является подклассом абстрактного классаGameObject
. -
GameGroup
использует интерфейсUITweenable
, у которого есть методsetUITweenManager()
-
GameObject
не использует интерфейсUITweenable
Я полагаю, что я мог бы (и, вероятно, должен) заменить GameGroup
в моем коде выше с помощью UITweenable
- я бы задал тот же вопрос.
Есть ли другой способ сделать это, чтобы избежать instanceof
? Этот код не может терпеть неудачу, как таковой (я думаю, правильно?), Но, учитывая плохую прессу instanceof
, похоже, я совершил какой-то кардинальный грех ООП где-то вдоль линии, где я использовал instanceof
здесь?
Спасибо заранее!