Interface Design von HookUp oder Callback Methoden für eigenes Framework

Schrello

Mitglied
Hallo,

für das Studium möchte ich ein Framework erstellen, dass durch Client-Klassen erweitert werden kann. Diese Client-Klassen sind mir jetzt unbekannt, daher möchte ich CallBack-Methoden implementieren über die die Client-Klassen an das Framework angehangen werden. Doch wie mache ich das am elegantesten?

Idee: Ich erstelle eine abstrakte Klasse, deren Methoden durch die Client-Klassen implementiert werden. Es ist aber meiner Meinung nach nicht möglich, über den Classloader alle Klassen zu finden, die ein bestimmtes Interface implementieren.

Wie bekomme ich im Framework einen Zugriff auf die Instanzen der später implementierten Client-Klassen?


Vielen Dank ,

Marcel
 

httpdigest

Top Contributor
Zum Beispiel, indem du in deinem Framework eine Methode bereitstellst, entsprechende "Callback"-Instanzen in deinem Framework zu registrieren. Dann könntest du die durch Client-Code bei dir registrierten Instanzen in einer Collection halten und damit machen, was du willst.
 

Schrello

Mitglied
Zum Beispiel, indem du in deinem Framework eine Methode bereitstellst, entsprechende "Callback"-Instanzen in deinem Framework zu registrieren. Dann könntest du die durch Client-Code bei dir registrierten Instanzen in einer Collection halten und damit machen, was du willst.

Danke,

dabei fällt mir ein zweites Problem auf... Mein Framework soll die Ausführungskontrolle behalten. (Weiß noch nicht wie das umsetzbar ist). Das bedeutet aber, dass die Übergabe einer Instanz durch den Client-Code nicht möglich ist... oder, da die Methoden der Client-Klasse ja nur durch das Framework aufgerufen werden können.
 

httpdigest

Top Contributor
Naja, alles fängt ja mit der main-Methode an, die ja offensichtlich unter der Kontrolle des Clients liegt. Und darin würde der Client z.B. gezielt eine Instanz einer Klasse deines Frameworks erzeugen (wie z.B. der ApplicationContext beim Spring Framework). Jetzt kannst du entweder eine Lösung bauen, die es dem Client ermöglicht, Service/Komponenten-Instanzen in deinem Framework selbst zu registrieren (wie es z.B. bei Guice geschieht), oder du baust eine Art Discovery Mechanismus via Classpath Scanning ein (wie z.B. bei Spring oder CDI).
Von was für einem Framework reden wir denn hier? Was tut das denn?
Generell würde ich die Dinge immer so einfach wie möglich halten und am Anfang so wenig "Magie" wie möglich ins Spiel bringen. Das hilft gewaltig bei der Testbarkeit des Ganzen.
 

fhoffmann

Top Contributor
Schau dir doch einmal an, wie das JDBC funktioniert. Hier gibt es ein ähnliches Problem (die das Interface Driver implementierende Klasse (OracleDriver, MySqlDriver oder wie sie alle heißen mögen) ist zur Compilezeit nicht bekannt).
 

Schrello

Mitglied
Von was für einem Framework reden wir denn hier? Was tut das denn?
Generell würde ich die Dinge immer so einfach wie möglich halten und am Anfang so wenig "Magie" wie möglich ins Spiel bringen. Das hilft gewaltig bei der Testbarkeit des Ganzen.

Hey erstmal vielen Dank für deine Mühen,

es soll ein Framework sein, dass die Funktionsweise von verschiedenen Such- und Sortier-Algorithmen grafisch darstellt.

Ich stehe am Anfang meiner Recherche... Meine Idee ist:
Die Such- und Sortieralgorithmen werden in einer eigenen Klasse implementiert. Diese Client-Klassen werden dann durch Callback-Methoden dem Framework bekannt gemacht. Das Framework kann, nach vorheriger Auswahl durch den Nutzer, einen der Algorithmen darstellen. So kann das gesamte Programm um weitere Such- und Sortieralgorithmen erweitert werden.

Meine Vorstellung ist:
1. Der Client erstellt ein Java-Projekt.
2. Bindet mein Framework ein.
3. Erstellt eine Client-Klasse z.B. "BubbleSort"", die ein Interface/abstrakte Klasse des Frameworks implementiert. z.b. in der Methode "sort" den Sortieralgorithmus implementiert.
4. Mein Framework, dass die Ausführungskontrolle besitzt und daher auch die Main-Methode implementiert, prüft, welche Client-Klassen das Interface implementieren, erzeugt eine Instanz dieser Klassen und ruft u.a. die "sort"-Methode auf.

Wie macht es denn z.B. JUnit? Dort liegt die Ausführungskontrolle doch auch beim Framework, oder nicht.

Ich prüfe nebenbei noch die Möglichkeit mit Annotationen... und bin suche gerade in alle Richtungen...
 

httpdigest

Top Contributor
JUnit/TestNG und alle nicht-invasiven Frameworks (also ohne direkte API-Nutzung, um sich irgendwo zu registrieren oder SPI zu nutzen) nutzen Classpath Scanning. Sie besorgen sich also den der JVM beim Start übergebenen Classpath/Modulepath und interpretieren manuell/händisch die Dateisystemordner- und Jar-Datei-Einträge darin. Wenn es ein Dateisystem-Ordner ist, werden einfach Dateisystem-Operationen benutzt, um rekursiv nach Dateien und weiteren Ordnern zu scannen. Wenn es eine JAR-Datei ist, wird per Zip/Deflate-API diese geöffnet und dadrin nach Klassen/Ressourcen gesucht.
 

Schrello

Mitglied
JUnit/TestNG und alle nicht-invasiven Frameworks (also ohne direkte API-Nutzung, um sich irgendwo zu registrieren oder SPI zu nutzen) nutzen Classpath Scanning. Sie besorgen sich also den der JVM beim Start übergebenen Classpath/Modulepath und interpretieren manuell/händisch die Dateisystemordner- und Jar-Datei-Einträge darin. Wenn es ein Dateisystem-Ordner ist, werden einfach Dateisystem-Operationen benutzt, um rekursiv nach Dateien und weiteren Ordnern zu scannen. Wenn es eine JAR-Datei ist, wird per Zip/Deflate-API diese geöffnet und dadrin nach Klassen/Ressourcen gesucht.

Danke... klingt etwas überzogen für meinen Ansatz. Ich suche mal weiter... Wie du korrekt sagtes... so wenig Magie wie möglich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Meinung zum verwendeten Design Pattern Allgemeine Java-Themen 4
S Noch eine Design-Frage zu Setter Allgemeine Java-Themen 6
S ArrayList Design Allgemeine Java-Themen 4
Kirby.exe Framework für Game Design Allgemeine Java-Themen 8
C WindowBuilder Design funktioniert nicht Allgemeine Java-Themen 0
M Diverse Design-Fragen Allgemeine Java-Themen 6
rentasad Design-Frage - Interfaces, Klassen, statische Methoden Allgemeine Java-Themen 3
M OOP Design Pattern - "extends Observable implements Observer" Allgemeine Java-Themen 0
T OOP Fehler im Design Allgemeine Java-Themen 9
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
N Vererbung Design-Problem mit vorhandenen, von der Klasse unabhängigen Methoden Allgemeine Java-Themen 12
R Parameter Adapter - Design Allgemeine Java-Themen 1
D Bezüglich Design meines Codes Allgemeine Java-Themen 1
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
S Java Design Frage Allgemeine Java-Themen 10
L OOP Klassen-Design (static oder nicht?) Allgemeine Java-Themen 3
P Auf die Anzahl der Joins achten beim WS design Allgemeine Java-Themen 1
M OOP Design Frage Allgemeine Java-Themen 2
J Domain Driven Design - Modellierungsfrage Allgemeine Java-Themen 3
F Welches Design Pattern? Allgemeine Java-Themen 3
H MVC Design Allgemeine Java-Themen 9
J Swing Eigenes Button-design Allgemeine Java-Themen 2
Q Kapselung Allgemeine Design- Frage Allgemeine Java-Themen 8
Z Design um boolsche ausdrücke zu speichern & auszuwerten Allgemeine Java-Themen 3
A Sinnvolles Software Design bei Eigenschaftsänderungen von Objekten Allgemeine Java-Themen 7
C Gutes Code Design (3 Schichten Modell) Allgemeine Java-Themen 19
D Design Stations-Gitter Allgemeine Java-Themen 4
M Public Static importRunning -> Bad Design oder ok ? Allgemeine Java-Themen 5
L Software-Design: Kommunikation mit SerialPort (RXTX) Allgemeine Java-Themen 2
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
G Design Patterns für Programm Allgemeine Java-Themen 3
I Wie populär ist Design by Contract in Java und was haltet ihr davon? Allgemeine Java-Themen 5
Landei Design-Problem Formel-Parser Allgemeine Java-Themen 10
J Aktionen im State-Design-Modell Allgemeine Java-Themen 3
S Design Oberfläche Allgemeine Java-Themen 2
L Design-Frage: Platzierung der Save-Methode Allgemeine Java-Themen 3
G Domain Driven Design Model Allgemeine Java-Themen 14
G konkretes Domain Driven Design Aggregate Allgemeine Java-Themen 2
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
G Accordion Design Pattern Frage Allgemeine Java-Themen 2
hdi Hilfe beim Design (Stichwort OO, Pattern, ...) Allgemeine Java-Themen 11
B Design Problem Allgemeine Java-Themen 8
faulelotte Verständnisproblem Domain Driven Design Allgemeine Java-Themen 3
S Frage zum Design der Datenstruktur Allgemeine Java-Themen 10
D design gesucht - Angabe von zu ersetzenden substrings Allgemeine Java-Themen 2
D Design ohne Getter und Setter Allgemeine Java-Themen 8
D Design: on-the-fly-Parsing + Datenstrukturen Allgemeine Java-Themen 5
N Welches design pattern? Allgemeine Java-Themen 8
D design client server Allgemeine Java-Themen 10
T Design-Frage Allgemeine Java-Themen 14
S XML-Parsing / public-Member-Variablen / Design-Frage Allgemeine Java-Themen 8
S JToolBar Design Allgemeine Java-Themen 3
M Bildersyncronisierung - Design Patterns? Allgemeine Java-Themen 2
T Design - Exception in Thread Allgemeine Java-Themen 3
G Composite, Design Pattern, printTree Allgemeine Java-Themen 42
N Design-Frage: persistent machen per Reflection Allgemeine Java-Themen 3
M Frage zum Design :: allgemein Allgemeine Java-Themen 6
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
U Frage zu DB Design Allgemeine Java-Themen 3
K Design / Implementierung Allgemeine Java-Themen 5
N Checkstyle - Design for Extension Allgemeine Java-Themen 4
F Design Pattern zur Realisierung von Mehrfachvererbung? Allgemeine Java-Themen 8
E Was ist ein gutes Design fuer meine Programm? Allgemeine Java-Themen 3
F Paket und Software Design Fragen. Allgemeine Java-Themen 5
P Apple Design Allgemeine Java-Themen 5
S design frage Allgemeine Java-Themen 10
T Design-Tipp gesucht Allgemeine Java-Themen 2
M Design von Java Klassen Allgemeine Java-Themen 2
G java design von klassen und projekten Allgemeine Java-Themen 6
K Design: Klassen in Pakete aufteilen - Eure Meinung Allgemeine Java-Themen 8
S Programmierstil / design Allgemeine Java-Themen 9
S Exception design Allgemeine Java-Themen 2
m@nu Exception-Design Allgemeine Java-Themen 4
R Design-Frage Allgemeine Java-Themen 9
N Hilfe beim Design Allgemeine Java-Themen 13
D Design Pattern: Singleton Allgemeine Java-Themen 4
Torres Design-Problem mit Jakarta Struts Allgemeine Java-Themen 2
A Anwendungs-Design (Plugin-Architektur) Allgemeine Java-Themen 4
T JNI: kein Zugriff auf VM in Callback-Methode eines Windows-Hooks Allgemeine Java-Themen 3
N JNI Callback Funktion Allgemeine Java-Themen 8
P JNI Callback Problem Allgemeine Java-Themen 2
J Serializable + callBack-Methoden Allgemeine Java-Themen 4
T Proxys: Idee für den Callback vom Server zum Client? Allgemeine Java-Themen 3
J Eigene Callback Methode? Allgemeine Java-Themen 3

Ähnliche Java Themen

Neue Themen


Oben