Главная страница
    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.049 c
2-1126711274
Андрей гость
2005-09-14 19:21
2005.10.16
запрос на выборку одинаковых записей


14-1127592077
NikNet
2005-09-25 00:01
2005.10.16
Где взять компонент TCPParser?


9-1118216589
Novouralsk
2005-06-08 11:43
2005.10.16
Плагин для 3ds Max!


2-1127035145
ShotGuN
2005-09-18 13:19
2005.10.16
Как присвоить OnClick свою процедуру?


2-1125919611
JTAG
2005-09-05 15:26
2005.10.16
Помогите кто работал с функцией ShellExecute





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский