Пусть есть рендер-система, причем на все приложение (например, игру) она должна быть одна, то есть логично реализовать ее в виде синглтона. Рендер-система — абстрактный класс, от него наследуются d3d-рендер-система и ogl-рендер-система.
На этапе выполнения должна быть возможнотсь создания по запросу нужной рендер-системы и гарантии того, что она будет существовать в единственном экземпляре.