Don P: Eigene DOM-Events feuern und verarbeiten

Beitrag lesen

Hallo,

Das Anzeigemodul muss sich auch "zuständig" fühlen - also kommst du m.E. nicht darum herum, die beiden miteinander bekannt zu machen.

Ja, leider. Deshalb bin ich eben auf den Gedanken gekommen, dass es doch eigentlich ausreichen müsste, wenn einer den anderen kennt, und sich nicht unbedingt beide gegenseitig kennen müssen.

Wenn z.B. viele Leute Briefe schreiben, dann reicht es völlig, wenn die Briefe durch die Post aus den Briefkästen eingesammelt und ausgeliefert werden. Das Einwefen eines Briefes ist ein Event, und der Briefkasten des Empfängers, wo der Brief schließlich landet, ist sein persönlicher Eventhandler. Der Brief des Nachbarn landet dagegen bei dessen Eventhandler. Dafür sorgt der Event-Mechanismus ganz von selbst.

Der Absender muss den Brief nicht persönlich im Kasten des Empfängers deponieren, sondern wirft ihn einfach in den nächstbesten von der Post. Dabei ist es oft ganz unerheblich, wer den Brief gesendet hat, z.B. bei einer geheimen Breifwahl. Wichtig ist nur, dass entsprechend darauf reagiert wird.

Bleiben wir beim einfachen Taschenrechner-Beispiel:
Beim erzeugen eines neuen Taschenrechner-Objektes kannst du doch eine Methode eines konkreten Anzeigemodul-Objektes per Referenz übergeben

Das ist eben nicht immer einfach. Während der Rechner noch rechnet, will er z.B. keine weiteren Eingaben engegennehmen, also müssen alle Bedienelemente des Eingabemoduls inzwischen deaktiviert sein.
Die Ergebnistaste zum Starten der Berechnung müsste zunächst für diese Deaktivierung sorgen, und das Anzeigemodul müsste dann in der Anzeigemethode alle diese Bedienelemente wieder aktivieren. Also muss man alle entsprechenden Elemente in einer Art Liste bereithalten und jedes Mal durchlaufen, bevor etwas ausgerechnet wird und auch nachher.

Wenn man nun statt dessen jedem betreffenden Bedienelement einen Event mit sprechendem Namen zuordnet, z.B. "calculation" (=es wird gerade gerechnet) und einen weiteren wie "inputReady" (=es darf eingegeben werden), dann können diese sich selbst aktivieren/deaktivieren, und die Anzeigemethode muss keine Liste dieser Elemente bereithalten oder durchlaufen, sondern lediglich Events vom entsprechenden Typ feuern. Das Durchlaufen geschieht quasi von selbst durch den Event-Mechanismus.

Warum soll das Anzeigemodul irgendetwas "abholen"?

Weil der Befehl zum Anzeigen manchmal auch gar nicht vom Rechnermodul kommt, sondern von einem anderen, welches wiederum nichts vom Rechnermodul weiß. Also kann es auch nicht das Ergebnis des Rechners an die Schnittstelle im Anzeigemodul übergeben, lediglich das Anzeigemodul muss wissen, wo es das Anzuzeigende Ergebnis findet (im Rechner).

Gruß, Don P