Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

архитектура приложения с поддержкой plug-in

505
08 марта 2008 года
vAC
343 / / 28.02.2006
На данный момент разрабатываю архитектуру для win32 приложения - визуализатора данных.
Основные требования: сделать программу максимально гибкой, расширяемой во многих направлениях и как можно более платформенно-независимой (на тот случай если будет решено перейти на другую платформу). Интересуют мнения по поводу следующего...

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

Примерно так я решил это реализовать:
Модуль предоставляет следующее: интерфейс (IPlot_pluggable, IObserver_pluggable), идентификатор интерфейса (GUID) и фабрику для создания экземпляров (IView_factory), которые добавляются в хранилище ядра. Ядро по GUID находит нужную фабрику и создает экземпляр.

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

В конструкторе эта обертка по известному ей GUID создает экземпляр для своего же интерфейса (IPlot) и делигирует все запросы IPlot этому экземпляру, а оставшаяся часть интерфейса реализуется в Plot_pluggable. Конечно же можно было применить и множественное наследование но, имхо, лучше воспользоваться шаблоном.
Недостатком здесь конечно является то что приходиться делать двойную работу создавая обертку и необходимо в конструкторе иметь доступ к ядру чтобы получить доступ к фабрике, что не очень то радует...

какие есть более элегантные решения?
5
09 марта 2008 года
hardcase
4.5K / / 09.08.2005
По архитектуре аддонов/плагинов неплохо рассказано тут (pdf), это #develop IDE.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог