Проектирую систему с плагинами и столкнулся вот с такой проблемой:
Каждый плагин системы представлен некоторым объектом (далее плагин), по сути являющимся абстрактной фабрикой, которая создает уже объекты-процедуры (далее процедуры). Также он выдает информацию об именах процедур, их параметрах и т.д. и т.п. И каждая процедура должна уметь рассказать о самой себе. Т.е. и плагин и процедура должны иметь доступ к одной и той же информации.
Пока придумалось два варианта:
1) Общую информацию сделать глобальной. — самый простой вариант, но субъективно не люблю использовать глобальные данные.
2) Инкапсулируем всю информацию о процедурах в плагин. Спрашиваем у процедуры указатель на плагин, к которому она принадлежит, а затем у плагина запрашиваем информацию об этой самой процедуре. — как-то оно получается не очень красиво, слишком много вызовов.