Для модуляции следует использовать синглтоны.
Представьте себе следующие объекты в одноэлементных:
Printer prt;
HTTPInfo httpInfo;
PageConfig pgCfg;
ConnectionPool cxPool;
Случай 1. Представьте, если вы этого не сделали, а один класс для хранения всех статических полей/методов. Тогда у вас будет один большой пул, с которым нужно справиться.
Дело 2.
В вашем текущем случае вы разделили их на соответствующие классы, но как статические ссылки. Тогда будет слишком много шума, потому что каждое статическое свойство теперь доступно вам. Если вам не нужна информация, особенно когда есть много статической информации, вы должны ограничить текущую область действия кода отсутствием информации.
Предотвращение беспорядка данных помогает в обслуживании и гарантирует, что зависимости ограничены. Каким-то образом, имея представление о том, что есть или не доступно мне, в моей нынешней области кодирования помогает мне более эффективно кодировать код.
Дело 3 Идентификатор ресурса.
Singletons позволяют легко масштабировать ресурсы. Скажем, теперь у вас есть единая база данных, и поэтому вы ставите все ее параметры как статические в классе MyConnection. Что, если пришло время, когда вам необходимо подключиться к нескольким базам данных? Если вы кодировали информацию о соединении как одноэлементный, улучшение кода было бы намного проще.
Дело 4 Наследование.
Одиночные классы позволяют пролонгировать. Если у вас есть класс ресурсов, они могут совместно использовать общий код. Допустим, у вас есть класс BasicPrinter, который можно использовать как singleton. Затем у вас есть LaserPrinter, который расширяет BasicPrinter.
Если вы использовали статические средства, ваш код сломался бы, потому что вы не смогли бы получить доступ к BasicPrinter.isAlive как LaserPrinter.isAlive. Тогда ваш единственный фрагмент кода не сможет управлять разными типами принтеров, если вы не разместите избыточный код.
Если вы кодируете на Java, вы все равно можете создать полностью статический класс содержимого и использовать ссылку на экземпляр для доступа к его статическим свойствам. Если кто-то должен это сделать, почему бы просто не сделать это синглом?
Конечно, расширение классов Singleton имеет свои проблемы помимо этого обсуждения, но есть простые способы смягчения этих проблем.
Дело 5 Избегайте использования информации. Есть так мало частей информации, которые должны быть сделаны глобально доступными, как самые большие и наименьшие целые числа. Почему Printer.isAlive разрешается делать трибуну? Только очень ограниченный набор информации должен быть разрешен для создания трибуны.
Существует поговорка: Подумайте глобально, действуйте локально. Эквивалентно, программист должен использовать синглтоны, чтобы мыслить глобально, но действовать локально.
Нет, просто используйте глобальный. Если вам не нужно больше одного, не делайте больше одного. – GManNickG