Eine Bestellung geht ein. Danach soll eine Bestätigung raus, das Lager informiert werden, eine Kennzahl steigen und vielleicht noch eine Buchung entstehen. Man kann das alles hintereinander in die Bestellfunktion schreiben. Oder die Bestellfunktion gibt nur bekannt: „Es ist eine Bestellung eingegangen.“ Wer darauf reagieren will, meldet sich dafür an.
Das Erste heißt Event, das Zweite Listener. Der Vorteil ist, dass eine neue Reaktion hinzukommen kann, ohne die Bestellfunktion anzufassen. Der Preis ist, dass man beim Lesen des Codes nicht mehr sofort sieht, was alles passiert.
Wo die Grenze verläuft
Entkopplung ist kein Selbstzweck. Wir setzen Events dort ein, wo mehrere Bereiche unabhängig voneinander auf denselben Vorgang reagieren, und lassen es dort bleiben, wo zwei feste Schritte aufeinander folgen.
Wichtig ist die Frage, was passiert, wenn ein Listener scheitert. Soll die Bestellung trotzdem gelten, wenn die Bestätigungsmail nicht rausgeht? Meistens ja, aber jemand muss davon erfahren. Genau deshalb laufen solche Reaktionen oft über eine Queue, die einen Versuch wiederholen kann, statt ihn stillschweigend fallenzulassen.