Re[2]: Вопрос по дизайну
От: l33thaxor  
Дата: 25.07.11 03:12
Оценка:
Здравствуйте, okman, Вы писали:

O>Здравствуйте, l33thaxor, Вы писали:


L>>...


L>>Вопрос: насколько хорошо такое решение через dynamic_cast?


O>В качестве "подставки" для какого-то особого случая — сойдет.

O>А как часть общего дизайна — не годится. Интерфейсы на то и интерфейсы,
O>чтобы их один раз спроектировать, а потом использовать, не меняя,
O>на протяжении долгого времени.

Поэтому и спрашиваю про альтернативы.

O>В COM (Windows) этот вопрос решили следующим образом — все классы наследуются от

O>абстрактного IUnknown, который имеет метод QueryInterface для запроса интерфейсов.

Не вижу принципиальной разницы между QueryInterface и dynamic_cast применительно для данной задачи.

L>>Есть ли другие варианты?


O>Такой, к примеру:

O>
O>void SomeFunction(IFaceOld *pConcreteOld)
O>{
O>    IFaceNew *pConcreteNew = new IFaceNew(pConcreteOld);

O>    ...

O>    delete pConcreteNew;
O>}
O>


Это, конечно, фигня, а не вариант. SomeFunction не может сама создать объекты классов реализующих эти интерфейсы, потому как она не знает, какие классы их реализуют, и как их создавать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.