Цель синглтона - иметь в вашей системе только ОДИН экземпляр определенного класса.
C'tor, D'tor и CC'tor скрыты, чтобы иметь единую точку доступа для получения единственного существующего экземпляра.
Обычно экземпляр является статическим (может быть также размещен в куче) и закрытым, и есть статический метод (обычно называемый GetInstance), который возвращает ссылку на этот экземпляр.
Вопрос, который вы должны задать себе, решая, иметь ли синглтон, таков: действительно ли мне нужно иметь один объект этого класса?
Существует также проблема наследования - она может усложнить ситуацию, если вы планируете наследовать от одного объекта.
Другая проблема - Как убить одиночку (в Интернете полно статей об этой проблеме)
В некоторых случаях лучше, чтобы ваши личные данные хранились статически, а не синглтоном, все зависит от домена.
Обратите внимание, что если вы многопоточные, статические переменные могут причинить вам боль в XXX ...
Так что вам следует тщательно проанализировать свою проблему, прежде чем принимать решение о шаблоне проектирования, который вы собираетесь использовать ...
В вашем случае я не думаю, что вам нужен синглтон, потому что вы хотите, чтобы библиотеки были инициализированы в начале, но это не имеет ничего общего с принудительным использованием только одного экземпляра вашего класса. Вы можете просто держать статический флаг (static bool Initialized), если все, что вам нужно, это обеспечить его инициализацию только один раз.
Вызов метода один раз не является достаточной причиной, чтобы иметь синглтон.