Параллельная иерархия классов
От: Дядюшка Че Россия  
Дата: 21.02.06 12:34
Оценка:
Интересный вопрос возник, все никак не родить решения...

Есть иерархия классов (чисто в теории)

class Shape    //базовый
{
virtual void Move(double dt) = 0;
virtual void Draw(HDC dc) const = 0;
virtual ~Shape();
// другие методы
};

class SomeShape : public Shape
{
    void Move(double dt) { /*...*/ }
    void Draw(HDC dc) { /*...*/ }
};
class OtherShape : public Shape
{
    void Move(double dt) { /*...*/ }
    void Draw(HDC dc) { /*...*/ }
};


Хотелось бы вынести отделить отрисовку. То есть вынести детали реализации Draw наружу. Также хочется оставить за собой возможность абстрагироваться от HDC и поддерживать отрисовку не только на нем, но и, скажем, на поверхностях DirectX и в GDI+.

Думается, что реализации Draw должны располагаться в отдельных иерархиях, но быть в то же время привязанными к основной иерархии.

Пример надуманный, но зато довольно наглядный. Чувствую, паттерны должны помочь; но какой/какие из них?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.