2009-10-06 4 views
0

Je suis à l'étape de la recherche d'un projet qui nécessitera le développement d'un gestionnaire d'événements personnalisé pour les événements de jeux informatiques.VB.NET: Construire un gestionnaire d'événements - Auditeurs

Dans le passé, le code de routage pour interroger les pièces correctes de code pour la consommation d'événement a été placé entièrement dans processEvents() fonction du gestionnaire d'événements. Exemple: L'interface utilisateur doit avoir la possibilité de consommer un événement Mouse-Click, mais pas un objet player.

La taille du projet à venir est assez grande, et je peux voir qu'il devient plutôt ennuyeux d'avoir à mettre ce type de routage dans la fonction ProcessEvents().

Lors de ma lecture la nuit dernière, j'ai lu sur le concept de l'enregistrement & désinscription auditeurs.

Cela semble être une excellente idée, mais je suis complètement perdu quant à la façon dont cela fonctionne ou comment je l'implémenterais dans VB.NET. Je suppose que le concept est ceci. Si je crée un nouvel objet Monster, je l'enregistrerais en quelque sorte comme un écouteur pour des types d'événements tels que GunShoot, BombExplode, etc. Pendant le traitement des événements par le gestionnaire d'événements, s'il rencontre un événement BombExplode, il interroge chaque écouteur enregistré s'ils peuvent consommer l'événement.

Comment cela pourrait-il être implémenté efficacement dans VB.NET?

Merci.

Répondre

1

Cela semble être le scénario parfait pour le WeakEvent Pattern intégré dans .NET.

Si vous avez fait vos abonnés à mettre en œuvre IWeakEventListener de façon appropriée, et créé les classes WeakEventManager appropriées, vous pourriez avoir des auditeurs qui ont écouté les événements « gestionnaire d'événements » (qui pourrait être mis en œuvre de nombreuses façons), sans avoir à se soucier des problèmes de vie provoquant des "fuites" de mémoire.

Questions connexes