Hallo,
ein Grund warum ich designtechnisch wahrscheinlich weniger schönen Code schreibe, ist, dass ich sehr oft an Stellen hängen bleibe, wo es darum geht, Objekte zwischen den verschiedenen Klassen (meistens in der Art Model, View, Controller) hin- und herzuschieben.
Im konkreten Beispiel habe ich eine Hauptklasse, die ein Datenmodell samt JTable zum anzeigen verwaltet. Über einen ButtonListener wird eine Subklasse, ein so genannter FilterManager erstellt. Dabei handelt es sich um eine Klasse, die von JDialog erbt und eben eine funktional schon relativ unabhängige Komponente modelliert. Sie bekommt das Datenmodell übergeben, der User kann verschiedene Filter darauf spezifizieren, anschließend wird ein neues Datenmodell berechnet und das sollte dann irgendwie wieder an die Hauptklasse gehen, die ihre Anzeige updaten soll. Wie mache ich das? Ich komme ja auf FilterManager nicht an das Objekt dran, dass ihn aufgerufen hat oder gibt es da irgendwelche Möglichkeiten?
Ich möchte hier auch nicht mit Kanonen auf Spatzen schießen, also gute Design - ja, aber zur Hauptaufgabe möchte ich es auch nicht machen :>
Zur Veranschaulichung hier nochmal die zwei Klassen in einer Art Pseudocode:
ein Grund warum ich designtechnisch wahrscheinlich weniger schönen Code schreibe, ist, dass ich sehr oft an Stellen hängen bleibe, wo es darum geht, Objekte zwischen den verschiedenen Klassen (meistens in der Art Model, View, Controller) hin- und herzuschieben.
Im konkreten Beispiel habe ich eine Hauptklasse, die ein Datenmodell samt JTable zum anzeigen verwaltet. Über einen ButtonListener wird eine Subklasse, ein so genannter FilterManager erstellt. Dabei handelt es sich um eine Klasse, die von JDialog erbt und eben eine funktional schon relativ unabhängige Komponente modelliert. Sie bekommt das Datenmodell übergeben, der User kann verschiedene Filter darauf spezifizieren, anschließend wird ein neues Datenmodell berechnet und das sollte dann irgendwie wieder an die Hauptklasse gehen, die ihre Anzeige updaten soll. Wie mache ich das? Ich komme ja auf FilterManager nicht an das Objekt dran, dass ihn aufgerufen hat oder gibt es da irgendwelche Möglichkeiten?
Ich möchte hier auch nicht mit Kanonen auf Spatzen schießen, also gute Design - ja, aber zur Hauptaufgabe möchte ich es auch nicht machen :>
Zur Veranschaulichung hier nochmal die zwei Klassen in einer Art Pseudocode:
Java:
class Main
{
private JTable table;
private DataModel dataModel;
private handleBtn()
{
FilterManager fm = new FilterManager();
}
public updateTable(DataModel newModel)
{
//...
}
}
class FilterManager extends JDialog
{
FilterManager()
{
buildGUI();
}
handleGUIBtn
{
DataModel result = calcNewData();
// wie krieg ich das jetzt nach Main?
}
}