2009-08-07 11 views
0

Ich bin in einer Situation, in der ich ein Objekt an mehrere gerade Handler senden möchte, aber bestimmte Daten von anderen Handlern verwenden. Das klingt ziemlich unklar - ich lese es selbst. Ich glaube nicht, dass ich verstehen würde, worüber ich gesprochen habe - also gebe ich ein Beispiel.Daten zwischen Event-Handlern freigeben?

Sagen wir, ich habe folgendes:

interface ChangeListener 
{ 
    public add_change(Change) 
    // ... 
} 

class ListenerA implements ChangeListener{...} 
class ListenerB implements ChangeListener{...} 

und wo die eigentliche Logik statt:

List changes = ... // populated from somewhere else 
List handlers = [new ListenerA(), new ListenerB()] 

foreach(change in changes) 
    foreach(handler in handlers) 
    handler.add_change(change) 

Mein Problem ist, dass ein Teil von dem, was ListenerA tun erstellen, ist eine URL für die Änderung, und ich möchte, dass ListenerB Zugriff auf diese URL (damit es verwenden kann). Als ein spezifisches Beispiel könnte ListenerA eine Blogging-API verwenden, um einen Beitrag für die Änderung zu erstellen, und ListenerB könnte dann eine E-Mail mit dieser URL senden.

Eine Option wäre, dass ListenerA dem Change-Objekt eine Eigenschaft mit der neu erstellten URL hinzufügt, aber ich bin mir nicht sicher, ob ich mit dem Objekt herumfummle. Eine andere wäre, sie einfach in Reihenfolge anzuordnen und einen Wert zu übergeben (im Gegensatz dazu, sie zu durchlaufen), aber ich versuche, eine saubere Trennung der Bedenken zwischen diesem Teil (der die Änderungen aussendet) und den Zuhörern, die es versuchen, beizubehalten und herauszufinden, wie man mit ihnen umgeht - so dass in Zukunft alles, was man braucht, um einen ListenerC hinzuzufügen, ein Objekt zur handlers Liste hinzufügen würde.

Irgendwelche Ideen für einen besten Ansatz?

Antwort

1

Klingt wie das, was Sie wollen, ist Listener B zu Listener A zu hören, anstatt beide auf das gleiche Objekt zu hören. Grundsätzlich wäre es eine Kette. Das Objekt ändert sich und teilt seinen Listenern mit (Listener A). Listener A ändert sich und teilt seinen Listenern mit (Listener B).

Da B eine Abhängigkeit von A hat, sollte B zuhören.

Verwandte Themen