Das Szenario. Ich schreibe spielbezogenen Code. In diesem Spiel hat eine Player
(es ist auch eine Klasse) eine Liste von Item
. Es gibt andere Typen von Elementen, die von Item
erben, beispielsweise ContainerItem
, DurableItem
oder WeaponItem
.Ist es ratsam, instanceof häufig zu verwenden?
Offensichtlich ist es sehr günstig für mich, nur List<Item>
zu haben. Aber wenn ich die Gegenstände des Spielers bekomme, kann ich nur anhand des Schlüsselworts instanceof
zwischen der Art des Gegenstands unterscheiden. Ich bin sicher, ich habe gelesen, dass es eine schlechte Übung ist, sich darauf zu verlassen.
Ist es in Ordnung, es in diesem Fall zu verwenden? Oder sollte ich meine gesamte Struktur überdenken?
können Sie die Notwendigkeit vermeiden instanceof verwenden, wenn Item eine abstrakte Methode definiert, zwingt jede Unterklasse ihre eigene zu implementieren. – NickJ
Überdenken Sie wahrscheinlich Ihre Struktur. Das Muster, das du beschreibst, ist wirklich ein Anti-Muster. – MadConan
Ja, die Verwendung von 'instanceof' ist im Allgemeinen ein Symptom für ein schlechtes/schlechtes Design. Der Trick besteht darin, doppelte Versand- oder Besuchermuster zu verwenden. Schau im Internet nach. –