Система плагинов, в своей основе обычно состоит из двух вещей.
1) Интерфейс или набор интерфейсов, которые должен реализовывать плагин, чтобы основная система могла их использовать.
2) Пользовательский загрузчик классов, который основная система реализует для загрузки плагинов, которые обычно упакованы в виде jar-файлов.
Основная система создает загрузчик классов на основе некоторого предопределенного каталога или файла конфигурации, который указывает, где существуют плагины. Этот загрузчик перебирает классы и находит те, которые реализуют указанный интерфейс, и вызывает методы, основанные на этом интерфейсе, в зависимости от системы.