Das erste Beispiel ein Ereignis Emitter Unterklassen und verwendet dann dieses Ereignis Emitter einige Funktionen zu implementieren. Das bedeutet, dass jemand anderes einen Ihrer student_max
Objekte nehmen und einen Ereignis-Listener für die scored
Nachricht registrieren kann oder sie könnten sogar eine scored
Nachricht selbst ausgeben. Sie könnten dann sehr einfach die eventEmitter
-Funktionalität verwenden, um auf andere Ereignisse, die in Ihrem Objekt aufgetreten sind, zu erweitern, und dann könnte jede dritte Partei diese Ereignisse ebenfalls beobachten oder auslösen. eventEmitter
ist eine standardisierte Möglichkeit, die ereignisbasierte Funktionalität zu exponieren. Sie können Dinge mit einem eventEmitter
durch die Entwicklung Ihrer eigenen Benachrichtigungsschemata erreichen, aber es ist oft besser, auf einem Standardschema aufzubauen, das viele Entwickler bereits kennen und das eine ganze Menge an Funktionalität bereits eingebaut hat.
Ihr zweites Beispiel wie derzeit codiert erreicht das gleiche, ist aber nicht so erweiterbar. Zum Beispiel, wenn Sie etwas wissen wollten ein score
geschieht, müssten Sie das Objekt Unterklasse und überschreiben die Score-Methode, anstatt nur einen Listener zu einem Ereignis mit der etablierten eventEmitter
Schnittstelle hinzufügen. Wenn Sie das Objekt nicht selbst erstellt haben (was es schwierig macht, Unterklassen zu erstellen), müssen Sie die Methode score
mit einem Patch versehen, um es zu beobachten.
, was der Unterschied der example1 ist
example2 Es ist ein architektonischer Unterschied, dass wirkt es sowohl auf wie außerhalb Agenten interagieren mit diesen Objekten und wie dehnbar sie in der Zukunft.
Die Verwendung der eventEmitter
in Beispiel1 ist sehr erweiterbar und erleichtert das Hinzufügen zukünftiger Ereignisse zum Objekt mithilfe der Funktionen eventEmitter
oder für externe Agenten zum Überwachen oder Auslösen von Ereignissen mithilfe einer standardisierten Schnittstelle. So ist der Unterschied nicht genau in dem Code, was Sie achieves zeigen, sondern wie es architected ist und somit, wie erweiterbar es in der Zukunft oder wie außerhalb Code sein würde, mit Ihrem Objekt interagieren könnte
Wenn es praktisch ist, um es zu benutzen?
Sie ein eventEmitter
Objekt so ziemlich jede Zeit denken würde, über die Verwendung von möchten Sie außerhalb Parteien in der Lage sein, Ereignisse oder Trigger-Ereignisse in einem leichten und einfachen Weg, auf dem Objekt zu beobachten. Es ist ein vorgefertigtes System dafür und ist oft besser, als ein eigenes Callback-Benachrichtigungsschema zu erfinden. Und manchmal ist es sogar für Ihre eigene Implementierung nützlich, wenn Sie nicht versuchen, externe Interaktionen zu aktivieren.
Danke +++++ perfekt erklärt. – DavidInu071
@ DavidInu071 - Da es so aussieht, als ob Sie hier neu sein könnten, können Sie dies der Community anzeigen, indem Sie auf das grüne Häkchen links neben der Frage klicken.Das bringt dir auch einige Reputationspunkte für das richtige Vorgehen und mehr Reputationspunkte werden dir später mehr Privilegien einbringen. – jfriend00
Das stimmt, ich bin neu hier, ich kann kein grünes Häkchen auf meiner Frage finden. Das einzige, was ich sehe, ist der upvotes/downvotes (
Verwandte Themen