Как правильно выставить API в системе плагинов?

На диаграмме классов ниже вы можете увидеть мой текущий подход системы плагинов / расширений. Я хочу предложить расширениям API для общих / глобальных вещей. Но предоставляемый API должен содержать только подмножество фактических функций ссылочного объекта. Моей первой мыслью было использовать интерфейс. Проблема в том, что злой плагин может снизить интерфейс внутреннего класса и испортить ситуацию. (Должен ли я вообще заботиться?) Вторая мысль заключалась в использовании шаблона прокси. В настоящее время я использую их обоих. Что не очень нужно, я думаю. Но имея в виду двоичную совместимость, как я могу уменьшить сложность здесь?

введите описание изображения здесь

0

Решение

Если вам нужны плагины, которые не могут каким-либо образом повредить вашу программу, вы должны сделать эти плагины отдельными процессами. Затем плагины запускаются в отдельном пространстве памяти и связываются с вашим приложением по каналу или сокету.

2

Другие решения

Я должен даже заботиться?

Нет. Функции C ++ существуют для того, чтобы помочь вам написать правильное программное обеспечение, а не защитить вас от злонамеренных разработчиков. Это не работа языка, чтобы сделать это. Ваши API должны быть разработаны для корректности, полноты и простоты использования.

имея в виду двоичную совместимость, как я могу уменьшить сложность здесь?

Создайте классы API, которые не наследуются ни от чего. Посмотрите на Leap Motion C ++ API для вдохновения, как это сделать правильно.

1

По вопросам рекламы [email protected]