Skip to content

Software Design Pattern

Maximilian Burr edited this page May 26, 2023 · 15 revisions

Software Design pattern

In der Anwendung werden mehrere Design Pattern umgesetzt.

Factory Pattern

Im Core Programmteil wurde eine Factory umgesetzt. Die Loader Klasse, verwendet eine Factory Klasse um die IPlugin Objekte zu erstellen und an den Kern zu übergeben. Die Verwendung der Factory ermöglicht es auch zur Laufzeit Plugins zu laden und zu erstellen. Damit müssen die neue Plugins nicht im Kern instanziiert werden sondern die Aufgabe kann durch die Factory durchgeführt werden.

Im aktuellen Zustand gibt es nur eine Art von Plugin, später soll noch mit einer Vererbungsstruktur feinere Unterteilungen von Plugin Arten durchgeführt werden. Dazu würden dann weitere "SubTypePluginFactories" angelegt werden, die ebenso das IPluginFactory implementieren.

Beispielsweise in Plugins für Frontends, SmartHome Systeme oder Funktionalitätserweiterungen des Kerns.

Im aktuellen Zustand kann die Loader Klase, die die Klassendateien der Plugins sucht und lädt nur Plugin.class Dateien laden, die im Java Classpath an der richtigen Stelle liegen. Um die Erweiterung durch unterschiedliche Plugins zu ermöglichen, müsste diese Klasse ebenso umgebaut werden.

package pluginmanager;


import java.lang.reflect.InvocationTargetException;

public class PluginFactory implements IPluginFactory {
    public IPlugin createPlugin(String className) throws IllegalAccessException, InstantiationException, NoSuchMethodException, InvocationTargetException, ClassNotFoundException {
        Class<?> clazz = Class.forName(className);
        if (IPlugin.class.isAssignableFrom(clazz)) {
            return (IPlugin) clazz.getDeclaredConstructor().newInstance();
        }
        return null;
    }
}
classDiagram

Loader --> PluginFactory
Core --- PluginFactory


Loading

Clone this wiki locally