Внутренняя архитектура ядра разработки на основе плагинов в Java

Я нашел ниже стили для разработки плагина

1:java.util.ServiceLoader

Рабочий стиль: поиск в META-INF/services и получение внедренного сервиса

Предоставить абстрактный класс другому разработчику

2:java.net.URLClassLoader

Рабочий стиль: загрузить необходимый класс из файла JAR и получить экземпляр.

Предоставить интерфейс другому разработчику

3: Загрузить из файла свойств

InputStream in =this.getClass().getClassLoader()
                .getResourceAsStream("packageName/config.properties"); 

Рабочий стиль 3: загрузка имени класса из файла свойств, который реализует предоставленный интерфейс

Предоставить интерфейс другому разработчику

Пример кода для 3

public interface PluginInterface {
    void performYourOperation();
};


public class PluginImpl implements PluginInterface {

    void performYourOperation() {
        //perform all operation what plugin is inteneded to do 

    }
    Main Loader:

     InputStream in =this.getClass().getClassLoader()
                .getResourceAsStream("packageName/config.properties");
    configProp.load(in );
            String factoryClass = (String) configProp
                    .get("plugin.factory.class");
            Class<?> factory = Class.forName(factoryClass);
            PluginInterface factory=(PluginInterface) factory.newInstance();
            factoryq.performYourOperation();

};

Я нашел 3 способа для собственного стиля реализации плагина.

Есть ли другие способы помимо вышеупомянутого.

Является ли Maven и Jenkins и другие его основной уровень в том же стиле, или у них есть более продвинутый путь? У любого есть хорошая идея для этого.

Пожалуйста, не предлагайте использовать этот фреймворк, и я хочу изучить и понять основной внутренний стиль работы. Спасибо

0 ответов

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