Есть приложение с некоей копмонентной архитектурой, компоненты выполняются в виде плагинов, которые видимы на экране в виде контролов, ( типа фунцция представлена на экране кнопкой, кнопку нажали, произвелись вычисления над некими данными), тоже через меню, тулбары и т.д. Эти контролы видны в неком главном GUI (хосте). Вот собственно вопрос.
Можно сделать так чтобы плагины реализовывыли некий интерфейс, хост их енумеровал (да простят мне такое выражение), и добавлял их в меню, тулбары, экран и т.д.
либо открыть интерфейсы хоста (для меню, тулбаров, добавления на экран и т.д) и пусть плагины себя сами добавляют.
Что думает коллективный разум?
Здравствуйте, PnP, Вы писали:
PnP>Можно сделать так чтобы плагины реализовывыли некий интерфейс, хост их енумеровал (да простят мне такое выражение), и добавлял их в меню, тулбары, экран и т.д. PnP>либо открыть интерфейсы хоста (для меню, тулбаров, добавления на экран и т.д) и пусть плагины себя сами добавляют. PnP>Что думает коллективный разум?
IMHO, зависит от сложности плагинов.
Если интерфейс плагинов достаточно простой, плагины не могут создавать "своих окон" и т.п. то первый вариант, когда хост запрашивает у плагина (или где-то берет) некое "определение" интерфейса плагина (в терминах хоста), будет попроще и понадежнее. Однако, интерфейс плагина скорее всего будет ограничен тем, что явно предусмотрел разработчик хоста. К тому же, используя этот подход, вы, скорее всего, лишаете плагины возможности изменять пользовательский интерфейс динамически во время работы приложения. Например, как в этом случае плагину добавить еще одну кнопку или еще один элемент меню уже во время работы?
Если же плагины более навороченные, тогда лучше второй вариант.
Например, тот же мс офис или студия реализуют именно этот вариант. В Eclipse вроде реализованы оба.