Здравствуйте, Alxndr, Вы писали:
A>Здравствуйте, vdimas, Вы много писали.
A>Ок, просто приведу пример.
A>Пусть есть рендер-система, причем на все приложение (например, игру) она должна быть одна, то есть логично реализовать ее в виде синглтона. Рендер-система — абстрактный класс, от него наследуются d3d-рендер-система и ogl-рендер-система.
A>На этапе выполнения должна быть возможнотсь создания по запросу нужной рендер-системы и гарантии того, что она будет существовать в единственном экземпляре.
А вот такие полиморфные синглтоны кажеться еще никто не изучал:
class CRender
{
...
};
CRender& getD3DRender()
{
class D3DRender : public CRender
{
...
};
static D3DRender obj;
return obj;
}
CRender& getOGLRender()
{
class OGLRender : public CRender
{
...
};
static OGLRender obj;
return obj
}
Достоинства — Производные классы анонимные и финальные — хрен отнаследуешься. Я бы назвал это "сильный" синглтон.
А призводящие функции можно и друзьями базового класса сделать