Observer Pattern
Dieser Artikel erfüllt die GlossarWiki-Qualitätsanforderungen nur teilweise:
Korrektheit: 3 (zu größeren Teilen überprüft) |
Umfang: 1 (zu gering) |
Quellenangaben: 1 (fehlen großteils) |
Quellenarten: 4 (sehr gut) |
Konformität: 3 (gut) |
Definition
Unter Eventhandling (Ereignisverarbeitung) versteht man die asynchrone Verarbeitung von Nachrichten. Diese Nachrichten werden meist durch einen Benutzer ausgelöst.
Bemerkungen
Für das Wort Nachricht werden oft Event und Ereignis synonym benutzt. Nicht nur Benutzer sondern auch Objekte selber oder das Betriebssystem können Nachrichten verschicken. Für interaktive Anwendungen ist ein gut funktionierendes Eventhandling sehr wichtig.
Beispiele
Anschauliche Beispiele für Events, auf welche die Anwendung reagieren soll:
Auswählen eines Menüpunkts, Minimieren eines Fensters etc.
Als Beispiel aus dem realen Leben kann die zwischenmenschliche Kommunikation betrachtet werden. Die Mutter (Event-Source) schickt an ihren Sohn (Event-Listener) die Nachricht (Event) "Alex, das Essen ist fertig, komm doch zu uns". Weil der Sohn im Laufe der Jahre (hoffentlich) gelernt hat, wie er auf diese Nachricht am besten reagieren soll, unterbricht er sein Spiel und setzt sich mit den Eltern an den Tisch.
Technische Realisierung
An dem Eventhandlingmechanismus sind folgenden drei Elemente beteiligt:
- eine Eventquelle (event dispatcher, subject) ist ein Objekt, das Nachrichten generiert, z. B. ein Button.
- ein Eventlistener (event handler, observer) ist ein Objekt, welches auf Nachrichten reagieren möchte. Nach Betätigung eines Buttons könnte z.B. ein Textfeld (Eventlistener) einen neuen Text anzeigen.
Üblicherweise muss ein Eventlistener erst bei einer Eventquelle erst registriert werden, damit er bei einem Event benachrichtigt wird. Das kann man mit Anmeldung bei einem E-Mail-Dienst vergleichen: Nur wenn man sich angemeldet hat, bekommt man ein Newsletter.
Die Eventquelle generiert eine Nachricht und schickt sie an alle Eventlistener, die dafür angemeldet sind. Die Quelle verschickt also sogenannte Multicast-Nachrichten.
Quellen
- Kowarschick (MMProg): Wolfgang Kowarschick; Vorlesung „Multimedia-Programmierung“; Hochschule: Hochschule Augsburg; Adresse: Augsburg; Web-Link; 2018; Quellengüte: 3 (Vorlesung)
- Kowarschick (2002): Wolfgang Kowarschick; Vorlesung „Multimedia Softwareentwicklung II“ – Wintersemester 2001/2002; Hochschule: Fachhochschule Augsburg; Adresse: Augsburg; Web-Link; 2002; Quellengüte: 4 (Skript)
- Heinisch C., Müller F., Goll J. (2005): Java als erste Programmiersprache