Статический getInstance()
подход затрудняет тестирование вашего приложения, поскольку вы не можете заменить NetworkConnection
на фиктивный объект или использовать свежий экземпляр NetworkConnection для каждого модульного теста.
Для вашего основного класса может быть лучше внедрить объект NetworkConnection в каждый JFrame через их конструкторы - и создать интерфейс NetworkConnection, чтобы вы могли использовать либо реальное NetworkConnection, либо фиктивное.
Это шаблон внедрения зависимостей.
Обратите внимание, что ваше реальное NetworkConnection может по-прежнему быть Синглтоном, если необходимо - это просто другой способ предоставления его объектам, которые в нем нуждаются.