Йа волосат и бородат!
Сегодня столкнулся с интересной задачкой.
Есть сторонняя библиотека, регламентирующая вид своих плагинов. Есть набор плагинов как "вшитых" в код намертво, так и отдельных (часть из них - сторонние).
Требуется прицепить к некоторым классам из плагинов некоторые одинаковые по составу наборы данных, в соответствии один класс к многим. Причем интерфейс классов этого проводить не позволяет и даже больше - некоторые конечные классы в плагинах обьявлены только в cpp-шниках, а значит в основном приложении недоступны. Чтобы стало совсем хорошо - укажем ограничение, что в некоторых из них набор определяется параметром из режима исполнения. Клиентский код работает с объектами исключительно через интерфейсы.
Единственное, что есть у классов - аналог оператора typeid, который позволяет получить строку с именем класса.

Менять интерфейс - плохо, ибо будут проблемы с обновлением, т.к. менять надо чуть ли не в корневых классах иерархии. Строить же в использующем доп. данные коде какие-то адопостроения с различием по классам тоже не хочется, ибо нагромождение и никто не может сказать, сколько кодеков будет дальше. Было решено сделать примерно следующее:

Каждый набор представляем структурой с некоторым интерфейсом, которую будем определять по строковому ключу. Ключ будет представлять собой строчку с именем класса.
Единственное, что представляет проблему - ассоциирование класса и нескольких наборов в зависимости от некоторого условия. Ввиду того, что такая ситуация была обнаружена только во "втроенных" в код плагинах, так что в таких случаях добавляем некий метод, по которому будем различать значения. Ограничение - должна быть возможна конвертация в строку. Я в своем подходе возвращал прямо строки.

Пример для самых упоротых. :)

Как оно работает - опишу позже. :)

@темы: программистское, работа

Комментарии
17.09.2009 в 01:40

Я вдаль смотрю на трещину в заборе, а в остальное время просто сплю.
...оно еще и работает! ты будешь перрвой жертвой восстания машин.
17.09.2009 в 08:38

Йа волосат и бородат!
Тринадцатая, о даа! Но перед смертью я отправлю их к тебе ))
17.09.2009 в 08:41

Я вдаль смотрю на трещину в заборе, а в остальное время просто сплю.
а я их пошлю. на ассемблере :)
17.09.2009 в 08:49

Йа волосат и бородат!
Бггг! )

Расширенная форма

Редактировать

Подписаться на новые комментарии