ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
28 апреля
132624 Топик полностью
Рэйлвэй Кaген (26.09.2008 14:15, просмотров: 539) ответил bialix_ на Механизм проверки соответствия набора фич: кто как делает, кто как думает?
Решение, возможно, лежит в области компонентного ПО. Composita, Zonnon, Singularity и т.п.. Смысл в том, что каждый интерфейс получает контракт(предусловия для работы через этот интерфейс). Что делать,если есть только "С"? Если не повторять кашу DirectX, то остаётся следующее: В предельном случае контракт - это просто список сообщений, обрабатываемых интерфейсом. 1. Можно статически(на этапе компиляции) связать сообщение и метод-обработчик сообщения. Налицо все проблемы, указанные Вами. Дополним список ещё одним полем для указателя на обработчик: 2. Пишем switch, а в case'ах по списку сообщений вызываем их обработчики через указатель. Быстро, но не накапливает расширения(новые сообщения), а позволяет только динамически заменить обработчик. 3. Перебираем список в цикле до нужного и вызываем его через указатель. Медленнее, чем во втором случае, но можно ещё и накапливать расширения(новые сообщения). 4. Можно ввести типизованные сообщения и приклеивать к ним символьную ссылку на указатель обработчика, полученную при подтверждении контракта. Далее просто вызываем обработчик через указатель, определённый по ссылке. Ну и под завязку - самая крутая трава: 5. Это было сделано на дельфях(но никто не мешает и на сях) - пишем базовый класс и "расширитель" к нему через array of TVarRec, причём записи могут быть типа vtClass. В этот vtClass подтягиваем ВСЁЧЁНАДО из дополнительной библиотеки, поставляемой с устройством, либо через сериализацию получаем прямо от подключаемого устройства. Самый большой плюс - у заказчика единственная "опломбированная" библиотека из базового класса и "расширителя". Причём эта библиотека нисколько не зависит от функциональности устройства. Менять её придётся только при смене заказчиком платформы. И ещё в интерфейсе должен быть метод, позволяющий считывать контракт, а не только "особо информативный" номер билда. Этот метод не должен изменяться ни при каких условиях. Теперь следить придётся только за списком сообщений и при его расширении(появлении новых фич) старые устройства будут втыкаться в старый интерфейс, а новые - в новый.