Здравствуйте, Андрей Галюзин, Вы писали:
O>> Достоинства — Производные классы анонимные и финальные — хрен отнаследуешься. Я бы назвал это
O>> "сильный" синглтон.
O>> А призводящие функции можно и друзьями базового класса сделать
АГ>А теперь о недостатках: в таком случае в коде придется явно указывать рендерер, чего автор как раз хотел избежать.
Автор хотел
на этапе выполнения иметь возможность выбрать нужный рендер. На одно положение TogleButton поставит getD3DRender(), на другое getOGLRender(). Ну и будет иннициализировать ими какой-нибудь CRender& curentRender (что никакой синглтон не запретит).
АГ>Я бы посоветовал наделить синглтон стратегией создания и не выдумывать велосипеды
Ес-но, если не нравится статическая иннициализация можно добавить всякие разные стратегии создания и управления временем жизни, далее — Александреску, Locki по вкусу. От себя — можно подумать как запретить существование обоих разнородных объектов одновременно (в рамках базового класса).
Мой вариант лишь добавляет еще один уровень защиты — защиты от наследования (впрочем это более актуально для библиотечных синглтонов)
Легче выдумывать велосипед чем моцоцикл