Предполагается, что здесь используется Java, но также относится и к большинству других технологий.
Я не уверен, что вы спутали использование простого синглтона с сервисным локатором . Оба они являются шаблонами дизайна. Шаблон локатора службы используется приложениями, чтобы гарантировать, что существует один класс, которому поручено получать и предоставлять доступ к базам данных, файлам, очередям JMS и т. Д.
Большинство сервисных локаторов реализованы как одиночные, так как нет необходимости, чтобы несколько сервисных локаторов выполняли одну и ту же работу. Кроме того, полезно кэшировать информацию, полученную при первом поиске, которая впоследствии может быть использована другими клиентами локатора службы.
Кстати, аргумент о
"это чтобы убедиться, что всегда есть
только одно активное соединение с вашей БД "
является ложным и вводящим в заблуждение. Вполне возможно, что соединение может быть закрыто / восстановлено, если оставлено неактивным в течение довольно длительного периода времени. Так что кеширование соединения с базой данных не одобряется. Есть одно отклонение от этого аргумента; «повторное использование» соединения, полученного из пула соединений, рекомендуется при условии, что вы делаете это с тем же контекстом, то есть в рамках того же HTTP-запроса или запроса пользователя (в зависимости от того, что применимо). Это сделано, очевидно, с точки зрения производительности, поскольку установление новых соединений может оказаться дорогостоящей операцией.