Prenons un événement à une interface de rappel où l'interface a une seule méthode.
Seule crochet événements dont vous avez besoin
Avec les événements que vous avez seulement besoin de mettre en œuvre des gestionnaires pour les événements qui vous intéressent dans la manipulation. Dans l'observateur de l'interface de modèle, vous auriez à mettre en œuvre toutes les méthodes dans l'ensemble de l'interface, y compris la mise en œuvre de la méthode d'organes pour les types de notifications que vous n'avez pas de soins sur la manipulation. Dans votre exemple, vous avez toujours à mettre en œuvre OnFoundDirectory et OnFoundFile, même si vous ne se soucient l'un de ces événements.
Moins d'entretien
Une autre bonne chose à propos des événements, vous pouvez en ajouter un nouveau à une classe particulière de sorte que cela va augmenter, et vous n'avez pas à changer tous les observateurs. Tandis que si vous voulez ajouter une nouvelle méthode à une interface, vous devez aller autour de chaque classe qui implémente déjà que l'interface et de mettre en œuvre la nouvelle méthode dans chacun d'eux. Avec un événement, vous avez seulement besoin de modifier les classes qui veulent réellement faire quelque chose en réponse à la nouvelle de l'événement que vous ajoutez.
Le modèle est construit dans la langue de sorte que tout le monde sait comment l'utiliser
Les événements sont idiomatiques, en ce que lorsque vous voyez un événement, vous savez comment l'utiliser. Avec un observateur de l'interface, les gens ont souvent de mettre en œuvre différentes façons de s'inscrire pour recevoir des notifications ainsi que le raccordement de l'observateur.. avec des événements bien que, une fois que vous avez appris à vous inscrire et utiliser une (avec l'opérateur+=), le reste sont tous les mêmes.
Des Pros pour les interfaces
Je n'ai pas beaucoup de pros pour des interfaces. Je suppose qu'ils se forcer quelqu'un à afin de mettre en œuvre toutes les méthodes de l'interface. Mais, vous ne pouvez pas vraiment forcer quelqu'un à mettre en œuvre toutes ces méthodes correctement, donc je ne pense pas qu'il y a beaucoup de valeur sur ce.
La syntaxe
Certaines personnes n'aiment pas la façon dont vous devez déclarer un type délégué pour chaque événement. Aussi, la norme de gestionnaires d'événements dans le .Net framework suivez ces paramètres: (object sender, EventArgs args). Comme expéditeur ne pas spécifier un type particulier, vous avez à bas-en fonte si vous voulez l'utiliser. C'est souvent fine, dans la pratique, si elle ne se sent pas tout à fait juste parce que vous êtes de perdre la protection du système de type statique. Mais, si vous mettez en œuvre vos propres événements et de ne pas suivre les .Net framework convention sur cela, vous pouvez utiliser le bon type pour que les bas-casting n'est pas nécessaire.