Re: Вопрос по дизайну
От: okman Беларусь https://searchinform.ru/
Дата: 21.07.11 06:30
Оценка:
Здравствуйте, l33thaxor, Вы писали:

L>...


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


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

В COM (Windows) этот вопрос решили следующим образом — все классы наследуются от
абстрактного IUnknown, который имеет метод QueryInterface для запроса интерфейсов.
Получается, что любой объект может в рантайме узнавать, поддерживает ли другой
объект необходимую функциональность. Для этого, правда, пришлось вводить такие
вещи, как подсчет ссылок, глобальные идентификаторы (GUID), и др. Но объекты COM
обычно сами по себе довольно пухленькие, поэтому небольшой оверхед не заметен.

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


Такой, к примеру:
void SomeFunction(IFaceOld *pConcreteOld)
{
    IFaceNew *pConcreteNew = new IFaceNew(pConcreteOld);

    ...

    delete pConcreteNew;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.