Einige meiner Klassen sollten anders behandelt werden. Welche Lösung ist besser?
- Einführung einer neuen Schnittstelle in meine Klassenhierarchie und Überprüfung, ob die Klasse sie implementiert oder nicht, unter Verwendung von RTTI (Runtime Time Identification)
- Hinzufügen einer Methode, die einen booleschen Wert zurückgibt, der angibt, ob diese Klasse normal behandelt werden soll oder eine Sonderbehandlung verdient
Die folgenden Beispiele veranschaulichen die oben genannten Situationen:
1.
interface SpecialTreatment {}
class Base {}
class Special extends Base implements SpecialTreatment {}
class Normal extends Base {}
Base reference = new Special();
if(reference instanceof SpecialTreatment)
// do something special
else
// normal class
2.
interface Treatment {
boolean special();
}
class Base {}
class Special extends Base implements Treatment {
boolean special() { return true; }
}
class Normal extends Base implements Treatment {
boolean special() { return false; }
}
Treatment reference = new Special();
if(reference.special() == true)
// do something special
else
// normal class