Полиморфный хак
От: WoldemaR Россия  
Дата: 26.05.06 12:00
Оценка:
Распространённая проблема: Надо залезть в исходник библиотеки и поправить/расширить функциональность объектов некоторого класса.
Грязный хак: (Осторожно, маскируется под нормальное решение благодаря общеупотребительности) —
Создать свой класс, производный от библиотечного и перегрузить (исправить) нужные методы.

А теперь я заставлю сторонников этой "технологии" раскаятся в содеянном!
Посмотрим, на что обречён разработчик:

    1) Комбинаторный взрыв вариантов обходных "решений".
    2) Правка и предусматривание фабричных функций создания экземпляров класса.
    3) Дублирование кода при копировании и модификации метода.

Весёлая "игра", не правда ли? Могу предложить сделать её веселей с помощью ещё более грязных хаков (фич):
    1) Динамически менять версию класса объекта подменой таблицы виртуальных функций и переаллокацией.
    2) Помечать любой функциональный блок атрибутом версии.
    3) Хранить все версии методов.
    4) Хранить каждый метод в самостоятельной dll (сборке). (Напрямую к делу не относится, но очень вкусно).

Сразу оговорюсь, что функционировать всё это должно в среде, аналогичной GC.

Вместо тухлых помидоров надеюсь на конструктивное обсуждение:

Где такое уже было или есть?
Есть ли более изящные решения?
Каковы плюсы и минусы?
Что мешает?
На чём сделать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.