-
Notifications
You must be signed in to change notification settings - Fork 0
Software Design Pattern
In der Anwendung werden mehrere Design Pattern umgesetzt.
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