Во-первых, синглтоны в подавляющем большинстве случаев являются плохой идеей ( Почему? ).Используйте их даже меньше , чем глобальные переменные.
Это так, что подклассы могут создавать экземпляры базового класса Singleton, возвращая его как часть себя в своей собственной функции GetInstance()
-типа.По этой причине это делается в Design Patterns .Поэтому это действительно полезно, если вы планируете наследовать от Singleton.
GoF говорит, (стр. 130, Подклассы класса Singleton );
A moreГибкий подход использует реестр синглетонов .Вместо того, чтобы Instance
определять набор возможных одноэлементных классов, одноэлементные классы могут зарегистрировать свой одноэлементный экземпляр по имени в хорошо известном реестре.
При использовании реестра синглетонов a protected
Конструктор в базе Singleton по-прежнему требуется (согласно приведенной реализации)
Короче;Сделайте это protected
, если вы планируете наследовать от Singleton.В противном случае перейдите с private
.