Brauche hilfe für ein Interface(?)

d4rkY89

Mitglied
Ich plane für einen Server zu programmieren, der so aufgebaut sein soll:
Es soll eine Kernkomponente geben, in der alles ohne Ausgaben abgearbeitet wird.
Zur Darstellung möchte ich dann ein JFrame aufbauen, bei der dann beispielsweise die Clients angezeigt werden, die momentan mit dem Server verbunden sind. Nun soll ein Interface, welches das JFrame implementiert hat, dazu dienen der Kernkomponente die Liste der Clients zu übergeben.

Beispiel:

Java:
public interface MyInterface {
	public void refreshList( String[] clientList );
}

Java:
public class GUI implements MyInterface {
	//...
	public void refreshList( String[] clientList ) {
		//code zum Verarbeiten der Liste
	}
	//...
}

Nun zu meiner Frage:

Ist es nun möglich, dass die Kernkomponente des Programms die Methode "refreshList( String[] clientList )" aufrufen kann, ohne zu wissen, welche (Instanzen von) Klassen diese Methode implementiert haben?
Ich möchte also kurz gesagt in der Kernkomponente die Methode "refreshList( String[] clientList )" in jeder Klasse aufrufen, die das MyInterface implementiert hat ( möglichst ohne voher die Objekte der Klassen zu sammeln; wie macht es Java beispielsweise beim MouseListener? Werden alle Klassen, die das Interface implementiert haben irgendwo angemeldet und in einer Liste eingetragen, sodass ein MouseEvent einfach an alle Klassen in dieser Liste z.b. mit der Methode "mousePressed" übergeben wird?)
Ich hoffe, dass mein Problem deutlich geworden ist^^. Hab jedenfalls im Forum noch nichts in der Art gefunden. Hab eventuell falsch gesucht. Ist dieses Problem eventuell anderst zu lösen? Also nicht mit einem Interface.
 
Zuletzt bearbeitet:
Listener müssen immer an dem Objekt angemeldet werden das sie abhören.
Die Kernkomponente die abgehört werden soll braucht also eine Methode mit etwa dieser Signatur
Java:
 public void addListener(MyInterface listener)
Die Kernkomponente muss sich dann die übergebenen Objekte merken (Zum Beispiel in einer Liste) und kann sie dann im Falle eines Falles über deren refreshList Methode aktuallisieren. So funktionierts auch mit den MouseEvents
 
Klingt logisch. Vielen Dankt :). Also war das mit dem Anmelden einer Komponente / eines Objekts keine falsche Überlegung von mir.
 
Zurück