Я пытался понять внедрение зависимостей и не совсем понял, за исключением того, что мне удалось понять, что это затрудняет понимание чужого кода. : '(
Во всяком случае, я не уверен, как кратко описать мою проблему, но я попробую. В настоящее время я являюсь единственным программистом, работающим над Java-проектом, над которым работали десятки одиночек около шести лет. Он интенсивно использует библиотеку Google Guice. Я должен взять некоторый существующий код и реализовать его по-другому; в частности, используйте существующие методы для аутентификации по паролю и вместо того, чтобы применять его к каждому JMenuItem в JMenu, примените его ко всему JMenu, чтобы при вводе неправильного пароля или отсутствии пароля все JMenuItem были отключены. Этого не происходит, если пароль неверный, что заставляет меня поверить, что проблема заключается в операторе if, который сам по себе является длинной строкой зависимостей:
if (!ViewScanApp.getApplication().getHistoryManager().isAuthenticated())
Я прослеживаю свой путь назад через это, чтобы обнаружить, что класс HistoryManager
является интерфейсом, и там мой путь, кажется, умирает; там нет кода, и он не ссылается ни на какой другой класс. Я нашел конец пути через случайное исследование 100 с лишним классов в проекте, но я не могу связать их. Я не могу найти, где будет вызван первый класс, который я могу найти на другом конце этого стека, AccessManagerImpl
.
Я мог бы использовать объяснение внедрения зависимости, которое может быть применимо к этой ситуации. Большое вам спасибо!