Скажем, у меня есть следующие компоненты:
- Производитель производит номера и отправляет сообщения потребителю
- Как производитель, так и пользователи отправляют сообщения на монитор
- Монитор, скажем произвольно, решает, когда процесс производства/потребления должен остановиться и отправит сообщение в "Стоппер"
- Стопор останавливает работу обоих производителей и потребителей
Я знаю, что это легко выполнить на изменяемом языке, таком как Java. Я также знаю, что это можно решить, разрешив частичную изменчивость с интерфейсами, например, здесь.
Однако, не очень хорошая практика иметь циклические зависимости, даже если это возможно. Итак, пусть предполагается, что все ссылки инжектируются конструктором и final:
- Производитель имеет
final Consumer
иfinal Monitor
- Потребитель имеет
final Monitor
- Монитор имеет
final Stopper
- Стоппер имеет
final Producer
иfinal Consumer
Я нашел ссылки, такие как это, но они, похоже, не применяются.
Как можно было бы отключить этот случай и такие случаи, как это вообще? Другими словами, меня больше всего интересует, как добиться формирования циклов с дизайнерской точки зрения. Любые подсказки?