Хм, думаю, я согласен с тем, что уровень данных должен отвечать за управление такими строками соединения, чтобы верхним уровням не приходилось беспокоиться об этом. Однако я не думаю, что SQLConnection должен беспокоиться о том, откуда берется строка подключения.
Я думаю, у меня был бы слой данных, который обеспечивает определенные DataInputs, то есть вещи, которые принимают условие и возвращают DataObjects. Такой DataInput теперь знает: «Эй, эти DataObjects хранятся в базе данных THAT, и с помощью конфигураций я могу использовать некоторую строку подключения для получения SQL-соединения оттуда.
Таким образом, вы инкапсулировали весь процесс «Как и откуда берутся объекты данных?» и внутренности слоя данных все еще могут быть проверены должным образом. (И, как побочный эффект, вы можете легко использовать разные базы данных или даже несколько разных баз данных одновременно. Такая гибкость, которая просто появляется, является хорошим признаком (tm))