Announcement

Collapse
No announcement yet.

Listener und Events auf Objekten

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Listener und Events auf Objekten

    Hallo!

    Ich denke mal dass sich die "swinger" unter euch am besten mit dem Thema auskennen, wo ihr ja ständig mit Listenern und event handling umgehen müsst.

    Ich würde gerne ein ähnliches Konzept auf ganz normalen Objekten realisieren.

    Z.B. Die Zustandsänderung eines Objektes (sprich die Attributwerte werden in irgendeiner Weise verändert) sollte ein Event auslösen, dass dann an eine Anzahl von angemeldeten Objekten weiterpropagiert wird.

    Leider ist das Event/Listener Konzept von swing bzw. awt auf eben solche Komponenten und Container beschränkt.

    Ich würde gerne eine Art Objektstatus-Monitor haben, der Veränderungen mitteilt, so dass sich z.B. eine View, die einen bestimmten Datenbestand visualisiert bei einer Änderung der Daten aktualisiert. Eben wie ein normales MVC Konzept nur mit Events auf gewöhnlichen Datenobjekten.

    Es gibt tatsächlich einen javax.naming.event.ObjectChangeListener. Den kann man allerdings nur in einem EventContext (Naming Kontext) anmelden.

    Das wäre dann ein bisl mit Kanonen auf Spatzen geschossen. Zudem möchte ich ja nur applikationsinterne Objekte beobachten und nicht gleich nen ganzen Namensraum.

    Hat da jemand ne zündende Idee?

    MfG
    Armin

  • #2
    Ich habe jetzt mal versucht das ganze gemäß Observer Pattern zu lösen. Ist aber eher eine Art Workaround weil ich alle Objekte, die
    ich beabachten will in einem als Observable deklarierten Hilfsobjekt kapseln muss.
    Das impliziert dass ich mich doch selbst um jede Art von
    Zustandsänderung kümmern und mittels notifyObservers meine angemeldeten Zuhörer benachrichtigen muss.

    Ich kann ja leider nicht z.B.

    class MyProperties extends Observable, Properties{
    }

    schreiben sonder vielmehr

    class MyProperties extends Observable{
    Properties data;

    ....

    }

    Das ist aber doch ein bisl unschön, da ich ja für jede Funktionalität welche auf dem gekapselten data Objekt Zustandsänderungen nach sich zieht selbst eine Methode schreiben muss

    Comment

    Working...
    X