Rolf B: Fake Event

Beitrag lesen

Hallo pl,

TL;DR: Entkerne den Event-Handler und benutze den Kern an passender Stelle.

Langfassung: Du hast offensichtlich das Problem A, einen Algorithmus X sowohl auf Grund eines Events als auch "manuell" durchzuführen.

Als Lösung willst Du den Handler E des Events direkt aufrufen und ihm vorgaukeln, dass er ein Event bearbeiten würde. Das ist Problem B, und für das bittest Du um Hilfe.

A-B Probleme behandelt man am besten, indem man B ignoriert und eine bessere Lösung für A sucht.

Der Kern von Problem A ist: SRP (Single Responsibility Principle) wird nicht beachtet. Deine Eventhandler-Funktion E tut nämlich zwei Dinge: Auf das Event reagieren und Algorithmus X ausführen. Diese beiden Dinge schienen beim Schreiben des Handlers identisch zu sein, aber nun stellt sich heraus: sie sind es nicht.

Die Lösung für Problem A besteht demnach darin, sich an SRP zu halten: Nimm X aus der Eventhandler-Funktion E heraus und mach eine eigene draus. E kümmert sich nur noch darum, die Daten aus dem Event-Objekt für X aufzubereiten und dann X aufzurufen. Eventuell muss E auch noch andere Dinge tun, die ausschließlich im Event-Kontext von Bedeutung sind (Steuern des Bubbling etc).

An der Stelle, wo Du X brauchst, rufst Du X einfach passend auf.

Rolf

--
sumpsi - posui - clusi