Содержание
- 2. Независимый программный модуль, обычно подключаемый на этапе выполнения программы Что такое компонента (plug-in)?
- 3. Преимущества компонентной архитектуры
- 4. Компонентная архитектура
- 5. Отличие обычных DLL от компонент
- 6. DLL: IPlugin *createInstance(const char *); Application: IPlugin* pluginInstance = createInstance(“RendererPlugin”); IRenderer* renderer = dynamic_cast (pluginInstance) Простое
- 7. Одно из трех: Нарушается безопасность типов static_cast Ограничивается применение плагинов dynamic_cast Необходима разработка сложной и ломкой
- 8. Интерфейсы определяется в приложении Для интерфейсов применяются соглашения COM Плагины региструются сами в нужном месте системы
- 9. Фабрики для плагинов
- 10. Application: DLL: Вариант 1, локальный
- 11. Система разрабатывается с нуля для поддержки плагинов Вариант 2, глобальный
- 12. А нужно ли поддерживать возможность работы из разных сред? Версии интерфейсов / библиотек Суперклассы - да/нет
- 13. Если нет требований, чтобы плагины и/или основное приложение работали из разных сред, нет смысла поддерживать соглашения
- 14. Проверять версии 1) У библиотеки (DLL) 2) У плагина (интерфейса) Как проверять? Как поддерживать совместимость? Старые
- 15. Функции: запрос на информацию без создания экземпляра = статические функции Создание объекта = фабрика Нужны ли?
- 16. Dynamic_cast QueryInterface Приведение типов
- 17. AddRef/Release – единственный вариант. Есть ли другие возможности? Если нет, почему? Подсчет ссылок
- 19. Скачать презентацию