J'ai deux classes: Compte et Opérateur. Le compte contient une liste d'opérateurs. Maintenant, chaque fois qu'un opérateur (dans la liste) reçoit un message, je souhaite également notifier l'objet Compte pour qu'il exécute également une logique métier.Notifier objet conteneur: bonnes pratiques
Je pense que trois alternatives sur la façon d'y parvenir:
1) Organiser une référence dans l'opérateur au conteneur [compte] objet et appeler des méthodes directement. Pas absolument bon à cause des références circulaires.
2) Utiliser les événements. Pour autant que je sache, il n'y a pas de mécanisme de gestion d'événements intégré dans Python. Donc, celui-ci est un peu difficile à mettre en œuvre.
3) N'envoyez pas de messages directement aux opérateurs. Au lieu de cela, opérez seulement les comptes, et en leur sein, en interne, les opérateurs de gestionnaire. Celui-ci est un peu limitant car dans ce cas je ne peux pas passer de références aux opérateurs.
Je me demande quelle approche est la plus avantageuse du point de vue architectural. Comment gérez-vous habituellement cette tâche?
Ce serait bien si vous pouviez signaler des extraits en Python.
+1 - Tant que vous utilisez Python 2.5 et ne définissez pas les méthodes __del__, les références circulaires ne sont pas très importantes traiter plus. –
@Jason Baker: J'ai beaucoup utilisé Python pendant 7 ans, je n'ai jamais défini de méthode __del__. Vous n'avez jamais eu de problème avec les relations bidirectionnelles, utilisez-les régulièrement. Ils ont bien fonctionné jusqu'à 2.2. –
Ok, je ne savais pas qu'il traque toutes les références circulaires. Mais que faire si je définis la méthode __del__ (pour une raison quelconque)? Je dois encore les suivre manuellement, non? –