Envoyé par
behess
En écrivant mon dernier message j'ai réalisé que je m'était compliqué en distinguant l'EventHandler du Behavior : un Behavior n'a pas de EventHandlers : un Behavior EST un EventHandler. La relation n'était pas la bonne en fait.
Je reviens sur cela, en fait ce que j'avais voulu faire c'est extraire cette partie de l'agent afin qu'elle soit remplaçable par un autre EventHandler.
Imaginons que subitement je décide de changer la manière dont les agents doivent gérer les Events, avec cette solution (ou variation) il suffit d'écrire un nouveau EventHandler et de faire :
agent.setEventHandler(monNouveauEventHandler);
Je n'aurai pas besoin de modifier mon agent de base lui-même.
Simplement dans mon schéma ce n'est pas ce qui ressort.
Il aurait fallu que je décrive une interface "EventHandlable" avec une méthode handle(Event); qui aurait été implémentée par un "BasicEventHandle".
L'agent devrait quant à lui disposer d'une méthode getChainedBehaviors() que le BasicEventHandle appellerait pour fournir l'Event à la chaine de Behaviors.
Ce serait plus extensible et maintenable comme ça non ?
Partager