Как создать приложение с поддержкой плагинов?

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

Обратите внимание: я не спрашиваю о разделении дизайна и логики.

Язык PHP.

Я спрашиваю о том, какие подходы (и как их достичь) используются в системах управления контентом, позволяя расширять приложение другими пользователями (плагинами, компонентами или расширениями).

Это просто вопрос шаблона дизайна? Или файловые структуры? или что?

1 ответ

Решение

Прежде всего вы должны принять решение о местах для поведения плагина в вашей программной архитектуре. Затем вы должны определить интерфейс для этих плагинов. После этого вам нужно построить интерфейс для регистрации плагинов.

Interceptor Pattern - ваш друг для запуска зарегистрированных плагинов в любом месте вашего приложения.

Вы должны определить стратегию приоритетов выполнения плагинов в очереди. Стратегии могут быть FIFO (FirstInFirstOut) или разрешать определенный пользователем порядок.

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

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

Хорошим примером в PHP для легкого доступа может быть ZendFramework1. Он использует простой плагин брокер для процесса отправки в FrontController. Как это работает, хорошо описано здесь и хорошо проиллюстрировано здесь. Но вы должны знать, что существуют лучшие подходы, например, аспектно-ориентированное программирование ( AOP). AOP в PHP доступен с помощью событийно-управляемого программирования ( EDP) или с помощью внешних пакетов, таких как AOP-PHP.

Другие вопросы по тегам