У меня есть два класса: учетная запись и оператор. Учетная запись содержит список операторов. Теперь, когда оператор (в списке) получает сообщение, я хочу уведомить объект «Учетная запись», чтобы выполнить некоторую бизнес-логику.Уведомление объекта-контейнера: лучшие практики
Я думаю, что из трех альтернатив, о том, как достичь этого:
1) Держите ссылку внутри оператора в контейнере [Account] объекта и прямого вызова методов. Не совсем хорошо из-за круговых ссылок.
2) Использование событий. Насколько я знаю, в Python нет встроенного механизма обработки событий. Таким образом, это немного сложно реализовать.
3) Не отправляйте сообщения операторам напрямую. Вместо этого используйте только учетные записи и внутри них, внутренние, обработчики. Это немного ограничивает, потому что в этом случае я не могу передавать ссылки на операторов.
Интересно, какой подход является наиболее выгодным с архитектурной точки зрения. Как вы обычно справляетесь с этой задачей?
Было бы здорово, если бы вы могли указать фрагменты в Python.
+1 - Пока вы используете Python 2.5 и не определяете методы __del__, круговые ссылки просто не являются большими больше. –
@ Джейсон Бейкер: сильно использовал Python в течение 7 лет, никогда не определял метод __del__. Никогда не было проблем с двунаправленными отношениями, используйте их регулярно. Они отлично работали вплоть до 2.2. –
Хорошо, не знал, что он отслеживает все круговые ссылки. Но что, если я определяю метод __del__ (по какой-либо причине)? Я все еще должен отслеживать их вручную, не так ли? –