У меня есть (дизайн) приложение, которое в основном работает так:
класс Main, класс BusinessLogic, класс UserInterface
BusinessLogic и UserInterface спроектированы так, чтобы быть похожими на библиотеки - не разрабатывались постоянно, а использовались разработчиком, скажем, в классе Main.
Конструктор BusinessLogic также создает экземпляр UserInterface, который отображает текстовое меню и принимает ввод с терминала. На основе этого ввода он выполнит соответствующую функциональность, вызвав соответствующий метод соответствующего объекта BusinessLogic.
Однако это циклическая ссылка, и у UserInterface нет очевидного способа вызвать соответствующий объект BusinessLogic (без жестко заданного идентификатора объекта BusinessLogic, но это даже хуже практики!).
Мне это кажется логичным, но трудно реализовать в терминах программирования.
Одна альтернатива, которую я рассмотрел, заключается в том, чтобы пользовательский интерфейс возвращал входные данные конструктору BusinessLogic, но я не хочу, чтобы BusinessLogic обрабатывал входной анализ, пользовательский интерфейс кажется разумным местом для этого.
Есть идеи?