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