Als Fortsetzung des 
vorherigen Artikels über den allgemeinen Status für Komponenten werde ich das Thema weiterentwickeln und eine Funktion implementieren, die ein Statusänderungsereignis in jeder Komponente abfängt und verarbeitet (wenn sich Daten im allgemeinen Status in einer Komponente ändern).
Link zum ProjektUm Datenänderungen in einer Komponente zu verfolgen, wird normalerweise eine direkte Verbindung hergestellt, dh wir überprüfen entweder in der Update-Methode, ob sich die Daten dort geändert haben
 Überprüfen Sie die Daten vorab über die Update-Methode
Überprüfen Sie die Daten vorab über die Update-Methodeoder wir abonnieren ein ganz bestimmtes Ereignis, das in der "verfolgten" Komponente unabhängig aufgerufen und später verarbeitet wird.
 Ein Ereignis in einer Komponente abonnieren und verarbeiten
Ein Ereignis in einer Komponente abonnieren und verarbeitenDieser Ansatz weist viele Mängel auf, die meist in einem früheren Artikel beschrieben wurden. Der Hauptgrund für diese Mängel ist eine starke Kohärenz und komplexe Wartung (die Fähigkeit, ein Projekt zu unterstützen, zu entwickeln und umzugestalten).
Erstellen einer Statusbenachrichtigungslösung
Nachdem Sie nun über ein System verfügen, mit dem Sie die Verbindung zwischen Komponenten lösen und Mailings zwischen Komponenten erstellen können, können Sie die manuelle Überprüfung von Werten im allgemeinen Zustand wie folgt vermeiden:
 Allgemeines Benachrichtigungsschema für Statusänderungen
Allgemeines Benachrichtigungsschema für StatusänderungenIn der im vorherigen Artikel beschriebenen Implementierung werden die Daten an einer Stelle im Indexer der SharedState-Komponente geändert, und daher ist es sehr einfach, ihre Änderung zu steuern
 Indexer im Allgemeinzustand
Indexer im AllgemeinzustandIm Setter des Indexers weisen wir Statuswerte zu.
Jetzt müssen Sie für die 
SharedState- Komponente eine Abhängigkeit von 
SharedEvents hinzufügen , da ich sie zum Senden von Benachrichtigungen verwenden werde. Attribut für 
SharedState hinzufügen. Hinzufügen einer SharedState-Abhängigkeit von SharedEvents
Hinzufügen einer SharedState-Abhängigkeit von SharedEventsErstellen Sie eine Klasse, die von EventData erbt, um Daten in einer Statusbenachrichtigung zu senden. Es enthält den Namen des Parameters im Status und seinen neuen Wert
 Hinzufügen einer Klasse, die Informationen zu einer Änderung des allgemeinen Status enthält
Hinzufügen einer Klasse, die Informationen zu einer Änderung des allgemeinen Status enthältJetzt müssen Sie einen Link zu 
SharedEvents hinzufügen , um ihn vom Spielobjekt in der 
SharedState- Komponente 
abzurufen SharedEvents in einer SharedState-Komponente abrufen
SharedEvents in einer SharedState-Komponente abrufenJetzt ändern wir den Setter des Indexers so, dass bei jeder Änderung des Status eine Benachrichtigung mit dem Namen "sharedstatechanged" erstellt wird und wir ein Objekt übergeben, das alle Daten über die Änderung enthält
 Ändern Sie den Indexer-Setter
Ändern Sie den Indexer-SetterJetzt müssen Sie die Änderungen in einer Komponente abonnieren, die Daten in einer anderen ändern und überprüfen, wie sie funktionieren.
Angenommen , die 
SecondComponent ändert den Status, z. B. den Parameter "somedata", und die 
FirstComponent- Komponente überwacht die 
Statusänderung , indem sie Benachrichtigungen abonniert
In 
SecondComponent rufen 
wir die Parameteränderung auf
 Datenanruf ändern
Datenanruf ändernUnd jetzt 
fügen wir in der 
FirstComponent- Methode einen Handler hinzu und 
drucken Informationen über die Änderung des allgemeinen Status zur Konsole
 Allgemeine Behandlung von Statusänderungsereignissen
Allgemeine Behandlung von StatusänderungsereignissenWenn Sie nun das Spiel starten, nachdem der allgemeine Status in 
SecondComponent geändert wurde, erhalten wir in der 
FirstComponent- Komponente eine Benachrichtigung und geben die Daten an die Konsole aus

Jetzt, da dies funktioniert, können Sie ein wenig umgestalten und den Code noch komfortabler gestalten. Dazu müssen Sie das Abonnement für Benachrichtigungen über Änderungen des allgemeinen Status an die 
SharedStateComponent- Basisklasse übertragen und eine abstrakte Methode erstellen, indem Sie nach Ermessen der Komponente implementieren, welche Komponenten 
Statusänderungen darin verarbeiten oder nicht.
Übertragen eines Abonnements auf 
SharedStateComponent Abonnieren von Benachrichtigungen über Änderungen des allgemeinen Status in der Basisklasse
Abonnieren von Benachrichtigungen über Änderungen des allgemeinen Status in der BasisklasseFügen Sie eine abstrakte Methode hinzu und rufen Sie sie im Ereignishandler auf
 Hinzufügen einer abstrakten Methode zur Behandlung des Ereignisses in untergeordneten Klassen
Hinzufügen einer abstrakten Methode zur Behandlung des Ereignisses in untergeordneten KlassenUnd jetzt müssen Sie in jeder 
untergeordneten Komponente von 
FirstComponent und 
SecondComponent diese Methode implementieren und die Änderung des allgemeinen Status darin verarbeiten. Aber wir werden es einfach wie zuvor auf die Konsole drucken
 Implementieren einer abstrakten Methode in FirstComponent- und SecondComponent-Komponenten
Implementieren einer abstrakten Methode in FirstComponent- und SecondComponent-KomponentenUnd jetzt, wenn wir das Spiel starten, sehen wir 2 Einträge in der Konsole von beiden Komponenten.

Wichtig!
In der vorherigen Implementierung gab es einen Fehler in der 
SharedEvents- Klasse. 
Um diesen Fehler zu beheben, müssen Sie die 
Subscribe- Methode in 
Folgendes ändern:
