Re[2]: Синглтон, позволяющий создавать полиморфные объекты
От: Oval  
Дата: 02.02.04 10:48
Оценка:
Здравствуйте, 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
}


Достоинства — Производные классы анонимные и финальные — хрен отнаследуешься. Я бы назвал это "сильный" синглтон.
А призводящие функции можно и друзьями базового класса сделать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.