Требуются два реквизита:
После тщательного осмысления становится ясно, что SRP не является проблемой, поскольку, как указано в ОП:
они должны быть доступны везде в любое время
Это означает, что абсолютно не нужно иметь отдельные объекты.Если в пространстве имен хранятся все указатели, но инициализация различных объектов выполняется по стеку?В любое время некоторые могут отсутствовать, указывая на ноль.Это оставляет только следующие тривиальные возможности:
- Без скрытия информации: вложенные пространства имен, заключающие в себе статические функции и переменные.
- С сокрытием информации: один «большой» класс менеджера-одиночки.Для дополнительной читабельности используйте префиксы в именах переменных и функций-членов.
- Сохраните то, что у вас уже есть
Я бы рекомендовал проводить различие между одноэлементным (объект, который может иметь толькоодин экземпляр) и обычный объект, экземпляр которого создается только один раз вашим кодом (последний не одноэлементный).