Das Reaktormuster wird in Wikipedia erklärt und ist etwas zu abstrakt. Können Sie dieses Muster konkreter beschreiben? Idealerweise mit Codefragmenten oder Klassendiagrammen auf hoher Ebene, die einige Anwendungen des Reaktormusters beschreiben.
Antworten:
Vielleicht möchten Sie das Originalpapier überprüfen, das es beschreibt: http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf
Das Reactor-Entwurfsmuster verarbeitet Serviceanforderungen, die von einem oder mehreren Clients gleichzeitig an eine Anwendung gesendet werden. Jeder Dienst in einer Anwendung kann aus mehreren Methoden bestehen und wird durch einen separaten Ereignishandler dargestellt, der für das Versenden von dienstspezifischen Anforderungen verantwortlich ist. Das Dispatching von Ereignishandlern wird von einem Initiierungs-Dispatcher durchgeführt, der die registrierten Ereignishandler verwaltet. Das Demultiplexen von Dienstanforderungen wird von einem synchronen Ereignisdemultiplexer durchgeführt.
Ein Reaktor ermöglicht die effiziente Verarbeitung mehrerer Aufgaben, die blockieren (z. B. aufgrund von E / A), mit einem einzigen Thread. Der Reaktor verwaltet einen Pool von Handlern und führt eine Ereignisschleife aus. Wenn es aufgerufen wird, eine Aufgabe auszuführen, verknüpft es sie mit einem neuen oder freien Handler, wodurch es aktiviert wird. Die Ereignisschleife (1) findet alle Handler, die aktiv und nicht blockiert sind (oder delegiert dies an eine Dispatcher-Implementierung). (2) führt jeden dieser gefundenen Handler nacheinander aus, bis sie entweder abgeschlossen sind oder einen Punkt erreichen, an dem sie blockieren. Abgeschlossene Handler werden inaktiv und können nicht mehr verwendet werden, während blockierte aktive Handler nachgeben, sodass die Ereignisschleife fortgesetzt werden kann. (3) Wiederholungen von Schritt (1)