Definition |
Ein NullObjekt ist ein Dummy, der an Stellen eingesetzt wird, wo es kein "echtes" Objekt gibt. Das NullObjekt implementiert die erwartete Schnittstelle des gebrauchten Objektes auf eine (im Verwendungskontext) sinnvolle Weise.
Mit dem Einsatzt des NullObjektes kann man Abfragen auf das Vorhandensein eines Objektes eliminieren.
Beispiele |
Beispiel 1: Logging |
Eine Bibliothek ermöglicht zu Debugzwecken Logging. Logging ist optional. Will man Logging erlauben, muss man die Bibliothek mit einem Log-Objekt, das folgende Signatur hat, initialisieren.
|
Wenn man keinen Log braucht, initialisiert man die Bibliothek mit null. An vielen Stellen der Bibliothek kann man folgenden Code sehen:
|
Mit einem Null-Log kann man den Code vereinfachen:
|
Logging ist jetzt nicht mehr optional, man muss die Bibliothek immer mit einem Log initialisieren. Wenn man kein Logging braucht, benutzt man ein Dummyobjekt:
|
Beispiel 2: Nicht vorhandene Daten |
Eine Methode soll Visitenkarten für Mitarbeiter einer Firma drucken. Wir wollen auch Visitenkarten ohne Namen eines Mitarbeiters, auf der nur die Angaben der Abteilung zu sehen sind. Die Methode erwartet als Parameter ein Objekt vom Typ Mitarbeiter, das Namen, Telefonnummer, Faxnummer usw. liefert.
Lösung: Erzeuge ein Dummyobjekt vom Typ Mitarbeiter, das als Name leere Zeichenkette liefert, und die Daten der Abteilung liefert.
Diskussion |
Eine Methode, die das NullObjekt verwendet, sollte sich nicht dafür interessieren, ob sie ein "echtes" oder ein NullObjekt verwendet.