Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

Посоветуйте: Plugins...   Найти похожие ветки 

 
френк   (2005-09-22 04:37) [0]

Ситуация следующая - непосредственно в приложении есть некий "центральный" класс, который обладает множеством методов и событий. Предполагается использование плагинов, которые бы имели доступ к методам этого класса. Как обычно реализуются подобные вещи?

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

Подскажите кто и как обычно поступает в подобных ситуациях. Надеюсь что нормально все объяснил ) Неужели тут выход один? Организовывать плагины в виде пакетов (bpl)? Посоветуйте, мастера!


 
evvcom ©   (2005-09-22 09:06) [1]


> к примеру, тем или иным образом среагировать на событие
> путем изменения свойств "цетрального" класса или же выполнением
> определенных его методов.

Если предполагается изменение ограниченного количества свойств, вызов ограниченного количества методов, то можно экспортировать несколько функций для этого. Если же хочется получить полный доступ к методам и свойствам "центрального" класса, то используй интерфейсы. Хотя, наверное, в любом случае лучше интерфейс.


 
wal ©   (2005-09-22 09:26) [2]


> Хотя, наверное, в любом случае лучше интерфейс.
Более того, считаю целесообразным все на СОМ завязать. Например, у меня похожая ситуация - "центральный класс" представляет собой COM-объект, плагины - тоже СОМ-объекты. Основное приложение загружая плагин передает ему ссылку на "центральный" объект приложения, соответственно плагин может делать с ним все, что разрешено, в том числе и подключаться к событиям этого объекта.

С уважением.


 
REA   (2005-09-22 10:51) [3]

Я делал BPL, все отлично. Проблемы только при несовпадении версий модулей.
Можно еще через интерфейсы работать тоже с BPL - получится почти COM.
Что то недолюбливаю я этот COM - мороки с ним много и тяжеловато получается.


 
wal ©   (2005-09-22 10:58) [4]


> [3] REA   (22.09.05 10:51)
Тут в стает такой вопрос. Кто эти плагины разрабатывать будет? И на чем? У меня изначально предполагалось, что плагины могут писать сторонние разработчики. И есть у них Делфи или нет - мне эти вопросом задаваться совсем не хотелось. А СОМ можно писать практически на всем.

С уважением.


 
френк   (2005-09-23 13:29) [5]

Огромное всем спасибо! СОМ действительно стоящее решение проблемы.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.044 c
3-1125923711
denmin
2005-09-05 16:35
2005.10.16
Не запускается BDE Administrator.


1-1127510917
Студент:(
2005-09-24 01:28
2005.10.16
Вычисление С в степени N с минимальным количеством умножений


6-1118922215
ilias1979
2005-06-16 15:43
2005.10.16
pop3 получение вложения


1-1127867033
Димыч
2005-09-28 04:23
2005.10.16
Контейнер с файлами


3-1125407170
menart
2005-08-30 17:06
2005.10.16
Как отловить изменение размера столбца в TDBGrid?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский