Говорят, что круговые зависимости плохие и анти-шаблоны. Итак, мой вопрос в том, что не так с кодом ниже? Является ли это примером круговой зависимости вообще? Код находится в псевдокоде python, но его следует понимать.Это круговая зависимость?
class Manager:
_handlers = []
def on_config(self):
# do something...
# and notify about "event"
for handler in self._handlers:
handler()
def add_change_handler(self, handler):
self._handlers.append(handler)
def get_value(self):
return some_value
class Consumer:
def __init__(self, manager):
self._manager = manager
self._manager.add_change_handler(self._on_event)
def _on_change(self):
print('Got event')
def do_something(self):
self._manager.get_value()
Итак: Потребитель получает менеджера:
- get_value от него
- зарегистрироваться для Litening на события изменения
Аргумент от ребят, которые выступают против этого решения заключается в том, что лучше создать другой класс, который будет:
- знают о менеджере и потребителя
- прослушивать событие конфигурации
- обработчик on_change операторского потребителя
- Потребитель будет использовать менеджер только get_value
Это не квалифицируется как * "зависимости" *. Это круговая * связь * возможно, но не зависимость. – deceze
В коде отсутствует циклическая зависимость. –
ОК, спасибо. Но разве этот проект испорчен? Что случилось с этим, если это так? Является ли предлагаемый в конечном решении лучший выбор? – user2146414