L'alternativa principale all'uso di instanceof
è polimorfismo . Piuttosto, chiedete quale tipo di oggetto avete nella posizione corrente, dite all'oggetto, qualunque esso sia, di fare ciò che volete. Se entrambi gli oggetti sanno come farlo, allora funziona bene, anche se lo fanno diversamente. Il principio al lavoro qui è chiamato Racconta, non chiedere .
Se la lingua che stai utilizzando non ha digitazione anatra avrai bisogno dei tipi B e C per entrambi in modo esplicito implementare la stessa interfaccia o tipo astratto con il metodo che si desidera chiamare. Ciò significherebbe che il tuo array è omogeneo . È quando è eterogeneo che ti rimane senza alcuna idea se puoi chiamare il metodo in modo sicuro finché non lo chiedi.
Se lavori su un codice base che utilizza un paradigma orientato agli oggetti le persone si arrabbieranno molto vedi l'uso di instanceof
. Non tanto se ti trovi in un paradigma procedurale .
Questo non significa che un solo paradigma abbia sempre ragione. Ma quando a Roma ...
Un esempio spesso usato:
Al pet show metti in fila i tuoi adorabili animali davanti al tuo pubblico. Per mostrare quanto sono ben allenati, dici a ciascuno: "Parla!"
I tuoi ciarlatani.
Il tuo cane abbaia.
Il tuo gatto ti guarda in modo divertente e poi ti ignora.
Il tuo animale domestico strappa un buco nel tessuto della realtà perché i progettisti della tua realtà hanno dimenticato di dare alle rocce qualsiasi tipo di funzione parlante.
Il rock è quello che metterebbe il tuo array nella categoria eterogenea. Tieni le rocce fuori dall'array e puoi evitare instanceof
.