Angenommen, eine Sprache mit einer gewissen inhärenten Typensicherheit (z. B. kein JavaScript):
Ausgehend von einer Methode, die a akzeptiert SuperType
, wissen wir, dass in den meisten Fällen die Versuchung besteht, Typprüfungen durchzuführen, um eine Aktion auszuwählen:
public void DoSomethingTo(SuperType o) {
if (o isa SubTypeA) {
o.doSomethingA()
} else {
o.doSomethingB();
}
}
Wir sollten normalerweise, wenn nicht immer, eine einzelne, überschreibbare Methode auf dem erstellen SuperType
und dies tun:
public void DoSomethingTo(SuperType o) {
o.doSomething();
}
... wobei jeder Subtyp eine eigene doSomething()
Implementierung erhält . Der Rest unserer Anwendung kann dann in geeigneter Weise unwissend sein, ob eine gegebene SuperType
wirklich eine SubTypeA
oder eine ist SubTypeB
.
Wunderbar
Wir erhalten jedoch immer noch is a
ähnliche Operationen in den meisten, wenn nicht allen typsicheren Sprachen. Dies deutet darauf hin, dass möglicherweise eine explizite Typprüfung erforderlich ist.
In welchen Situationen sollten oder müssen wir explizite Typprüfungen durchführen?
Vergib mir meine geistige Abwesenheit oder meinen Mangel an Kreativität. Ich weiß, dass ich es schon einmal getan habe. Aber es ist ehrlich gesagt so lange her, dass ich mich nicht erinnern kann, ob das, was ich getan habe, gut war! Und in den letzten Speicher, ich glaube nicht , dass ich je gesehen habe Notwendigkeit Arten außerhalb meines Cowboy JavaScript zu testen.