Designfrage: Packageverwaltung

Status
Nicht offen für weitere Antworten.
S

Simon2

Gast
Guten Abend.
Ich habe eine Designtechnische Frage:
Und zwar möchte ich ein Programm möglichst erweiterbar programmieren. So sollen Plugins(Packages) einfach durch die Pfadangabe in einem Textfile (oder XML) hinzugeladen werden.

Anwendungsbeispiel:
Ein JTabbedPane, in dem die Anzahl und der Inhalt der Tabs nicht definiert ist. Ein Tab kann durchaus ein größeres Programm enthalten.
Jedes dieser Programme wäre ein Package, somit wäre das Hauptprogramm sehr leicht erweiterbar.

Falls mein Ansatz nicht total daneben ist und anerkannte, viel bessere Lösungen zur einfachen Erweiterbarkeit von Programmen bestehen, dann müsste ich allein noch wissen, wie ich packages zur Laufzeit hinzulade, aber das find ich noch raus...
Wie der Titel schon sagt, ist mehr ne Designfrage.

Beste Grüße,
Simon
 

Wildcard

Top Contributor
packages kann man nicht laden.
Klassen sind packages zugeordnet, aber kein package kann wissen welche Klassen sich als ihm zugehörig betrachten.
 
G

Guest

Gast
Ok, hast du vll. n anderen Vorschlag? Ich hab n bisschen rumgefragt, ein Freund konnte mir hat mir ne Lösung für C++ anbieten, sieht so aus:

"es gibt ein definiertes interface das ca. so aus sieht:
Code:
 class plugin { void CreateMenuEntry(); void ShutDown(); ...}
es ist ein INTERFACE
aber so eine implementierung gibt es in jedem plugin
es wird dann halt nur eine dieser klassen erzeugt, die sich dann automatisch als tag einfügt.
weil das programm den typen eigentlich nicht kennt exportiert die dll eine einzige function plugin* CreatePlugin();
die wird aufgerufen."

Ich bedanke mich bei ihm, allerdings weiß er auch nicht wie das in Java realisiert wird. Allerdings glaube ich inzw. zu wissen, wie ich das Probelm löse. Es gibt ja den Classloader... :idea:
 

Wildcard

Top Contributor
Am einfachsten ist, du definierst einen speziellen Ordner in dem Plugins abgelegt werden (jars).
Diese jars könnten beispielsweise eine XML Datei enthalten, die beschreibt wo sich das Plugin einhängt (sieh Eclipse).
Die dort angegebenen Klassen instanzierst du dann über Reflection.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben