Best Practice Java - eine Art Plugin-Struktur

anTonL

Mitglied
Hi
Ich habe eine Anwendung, die Daten erstellt und je nach Nutzereingabe diese Daten an verschiedene andere (interne) Dienste weitergibt.
Natürlich könnte ich einfach boolean-flags setzen, ob ein gegebener Dienst für einen Datensatz aktiviert ist, oder eben nicht. Jedoch möchte ich später vll. noch mehr Dienste implementieren, und der Weg über booleans wäre dann sehr wartungsaufwendig (abgesehen davon, dass es sehr unsauberen Code geben würde).
Nur wie lässt es sich besser implementieren? Eine Idee, die ich noch hätte, wäre ein Enum mit allen Diensten, und jeder Datensatz hätte ein Set, in dem alle "aktivierten" Dienste enthalten sind.
Gibt es da noch bessere Lösungen?
 
In Java kann man an der Stelle sehr viel mit Reflection machen. Schau dir einfach mal die Klassen in java.lang.reflection an.

In deinem Programm definierst du z.B. ein Interface für dein Plugin
Java:
interface IPlugin {
    String getName();
    void doSomething();
}

Anstatt daß du deinen Datensätzen dann eine Liste von Bool-Flags mitgibst, erstellst du einfach eine Liste von Strings, die die Namen von Klassen enthalten, die dein Interface implementieren.
Deine Anwendung geht dann her und liest sich die Metadaten von deinem Datensatz ein. Dort steht dann z.B. daß der Datensatz für die Klasse com.myplugin.MyPlugin gedacht ist und macht dann sowas hier:
Java:
IPlugin plugin = Class.forName("com.myplugin.MyPlugin").newInstance();
Am Ende hast du dann eine Instanz von IPlugin, die du auf deinen Datensatz loslassen kannst. Oder eine Exception. Wie das halt so ist in Java 😉
 

Neue Themen


Zurück
Oben