Die Beispiele, die ich im Internet gesehen habe, geben nur Methode zum Observable-Objekt. Was, wenn ich auch einige Daten an die Beobachter weitergeben möchte, damit sie wissen, ob sie darauf reagieren sollen oder nicht? Ermöglicht das Beobachtermuster die Weitergabe der Daten, wie zum Beispiel:Beobachtermuster: Benachrichtigen mit Zustand
notifyObservers(Event e)
.
Oder vielleicht sollten die Beobachter selbst die Veränderung ziehen? Wie vielleicht: notifyObservers() -> call observer.update()
und dann jeder Beobachter entscheidet, ob die neuen Daten für sie relevant sind, observable.getData()
. Bei diesem Ansatz ist es mir jedoch unklar, wie man nur die Daten erhält, die sich geändert haben, wenn sie überhaupt benötigt werden.
bearbeiten, Beispiel:
sagen, dass ich ein Taxi-Unternehmen mit Betreibern, Kunden und Taxi machen wollen. Wie @ Pritam Banerjee Antwort, werde ich sagen, dass Taxiunternehmen ist ein Vermittler zwischen Betreibern und Kunden (z. B. warum - Client kann ein Taxi telefonisch oder online anrufen). Dann sind meine Operatoren Untertanen, und Taxis sind Beobachter.
Operator ---observes---> TaxiFirm
TaxiFirm(waits for client) ---notifies one---> Operator
(Firma wählt aus, welche Betreiber verantwortlich ist, und leitet einen Client Operator)
Taxi ---observes all---> Operators
(müssen irgendwie Daten hier drücken, wenn das Taxi besetzt ist, kann es nicht neu akzeptieren client)
Taxi ---notifies---> Operator
(wenn ein Taxi einen Kunden akzeptieren kann, wird es den Fahrer darüber informieren, ich mache mir keine Gedanken über die Rennbedingungen, weil dieses Ereignis manuell ausgelöst wird. Vielleicht sollte Taxi die Firma und nicht den Operator benachrichtigen?)
Ich denke, es ist möglich, dass TaxiFirm müssen nicht Client Betreiber übergeben, sondern über das wahre Leben zu denken, es ist wirklich Betreiber, die den Kunden sprechen ...
ich geschrieben habe mein Gedankengang nach unten, bitte Hilf mir dabei, die Architektur für dieses Modell herauszufinden.
Ich denke, dass Sie Ihren Fluss mit der Sorge der Java-Implementierung neu definieren müssen. Deine ersten 2 Zeilen sind in Ordnung. Die Firma sollte ein unbesetztes Taxi für einen unbelegten Betreiber auswählen und ihn (Betreiber) mit den Kunden- und Taxiinformationen benachrichtigen. :)) –
Siehe meine aktualisierte Antwort. – MarcG