Frage

Die einfachste Aufgabe in einer objektorientierten Umgebung wird auf einem Objekt eine Methode ausgeführt wird. Um dies zu tun, müssen Sie das Objekt einen Verweis auf den Sie die Methode aufgerufen wird. Ist der richtige Weg, diese Referenz zu etablieren, das Objekt als Parameter an den Konstruktor (oder initializer-Methode) des anrufenden Objekt zu übergeben?

Wenn das Objekt foo in Objekt bar ruft, ist es richtig zu sagen (in Pseudo-Code):

bar = new barClass()
foo = new fooClass(bar)

Was passiert, wenn Sie Nachrichten müssen hin und her zu übergeben? Benötigen Sie eine Methode für das Zielobjekt Registrierung?

foo = new fooClass()
bar = new barClass()

foo.register(bar)
bar.register(foo)

Gibt es ein Muster, das diese Adressen?

War es hilfreich?

Lösung

Generell Dependency Injection ist der Weg zu gehen. Wenn Sie sprechen nur über zwei Objekte in Verbindung stehen dann eine Instanz von einem in als Paramter auf den anderen übergeben, wie in Ihrem ersten Beispiel. gewährleistet die Referenz im Konstruktor ist immer gültig. Andernfalls würden Sie Register testen, um sicherzustellen, hatte genannt. Auch müssen Sie sicher, dass calling registriert mehr machen, als wenn keine negativen Auswirkungen haben.

Was ist, wenn Sie ein Controlling-Objekt wollen, auf die anderen Objekte für Ereignisse registrieren. Es wäre dann geeignet sein, ein Register-Methode zu verwenden (was zu einem Delegierten hinzufügen können).

Siehe Observer-Muster

scroll top