Большая система с плагинами, плагины регистрируют функции (для общего использования) в синглтон например: “API.http.get”, “API.math.fibo” и т.п.
так же в “одно имя метода” (например “API.http.get”) можно зарегестрировать несколько функций с разным приоритетом (так организованы hook-и).
Ещё пример: плагины для web фреймворков bottle/flask/django… регистрируют методы API.web.route, API.web.start_server и др., в дальнейшем можно легко менять один фреймворк на другой.
Что оно дает:
+ Доступ ко всему функционалу, подключив один объект “API”
+ Возможность установить хук на любую ф-ию
+ Уход от дублирования функционала ( иногда знаешь что где-то реализовывал конкретную функцию но уже не найти или не достать, если она будет доступна в “API.” будет проще )
+ Легко сформировать список всех ф-ий (для общего использования)
+ Использовать как интерфейс? ( например сказать одному разработчику “ты должен реализовать API.facebook.connect, API.facebook.read”, а другому сказать что-б использовал их, в остальном они свободны: название плагина, содержимое…, мне останется только включить плагины)
сюда же можно прикрутить зависимость между плагинами, какой-нибудь API.required()
т.е. получается, что я как-бы ухожу от обычных импортов.
Вопрос, чем плоха такая организация системы? Как улучшить, что почитать?