Как работает зависимость плагин / плагин?

У меня очень простой вопрос о практической работе программных плагинов. Я понимаю, как работает простой дизайн плагина, то есть такой, когда плагин добавляется к приложению хостинга. Например, плагин добавляет новый фильтр в программу рисования. Хост знает, что он должен вызвать метод, называемый фильтром, который предоставляет плагин. В этом случае все плагины независимы.

Мой вопрос относится к случаю, когда один плагин может использовать возможности другого плагина. Например, может существовать плагин, который предоставляет возможность отображать данные, в то время как другой плагин генерирует данные. Если подключаемый модуль генератора данных никогда раньше не видел подключаемый модуль построения графиков, я предполагаю, что у него нет возможности узнать, какие методы вызывать в подключаемом модуле построения графиков. Я предполагаю, что в этих случаях разработчик плагина генератора данных должен иметь доступ к описанию API графического плагина либо в форме абстрактного класса, либо в виде интерфейса. Это как работает зависимость плагинов, т.е. плагины явно знают об Apis, которые могут быть у других плагинов?

Я только что построил такую ​​систему плагинов, чтобы плагины могли использовать другие плагины, которые я включаю в копии исходного кода интерфейсов плагинов, о которых должен знать каждый плагин.Проблема с этим подходом заключается в том, что если появляется новый плагин построения графиков, но с другим API, плагин генератора данных не может использовать его без предварительной перекомпиляции, чтобы он знал о новом API. Мне это не кажется правильным.

Я знаю, что это может показаться очень простым вопросом и на него есть очевидный ответ, но я часами искал в Интернете и не нашел четкого заявления по этому вопросу.

8
задан rhody 21 November 2011 в 08:17
поделиться