У шаблона Singleton есть свои плюсы и минусы, но если вы его используете, то то, что вы написали, не слишком страшное.
Я бы настоятельно предложил переименовать init() в нечто большее, чем getInstance(), если это то, что возвращает эта функция.
Насколько ваше использование касается, единственным реальным отрицательным в письменной форме
a::getInstance()->foo();
a::getInstance()->bar();
вместо
a* thing = a::getInstance();
thing->foo();
thing->bar();
будет потенциал накладных дополнительный вызов функции, если функция деЫпзЬапсе() не имеет были включены.
Обычно, если вы собираетесь использовать один и тот же синглтон несколько раз внутри одной функции, вызов getInstance() один раз будет намного лучше, но в конечном итоге я думаю, что это будет скорее проблема стиля кодирования любой реальной проблемы с производительностью.
Почему, по вашему мнению, это злоупотребление классом singleton? Шаблон singleton ограничивает экземпляр класса одним объектом, что полезно, когда необходим один объект для координации действий по всей системе. Он не вводит никаких ограничений на вызов своих методов. –
спасибо за ответ –
Вызов его 'init' 'плохо пахнет (только первый вызов будет инициализирован, поэтому имя очень вводит в заблуждение, что-то вроде' getInstance() 'было бы более уместным). Но в противном случае это выглядит довольно стандартным способом использования singleton. – Dukeling