Startpunkt wären folgende Definitionen (natürlich vereinfacht dargestellt):
Meine Interpretation von MVC ist relativ strikt und sieht folgendermaßen aus:
Um diese Trennung strikt durchführen zu können und Model und View möglichst wenige Daten mitzugeben, sollte (wie oben in der main-Methode zu sehen) am besten nur der Controller Bescheid über View und Model wissen.
Lange Rede, kurzer Sinn: Das Problem besteht aktuell in den Event-Listenern für Buttons etc. Folgendes funktioniert leider nicht (um genau zu sein, scheint es komplett ignoriert zu werden):
Im Controller-Konstruktor:
Ich würde an dieser Stelle erwarten, dass ein Klick auf den Button auch "Test-Message" in der Konsole erzeugt. Leider funktioniert das so aber nicht.
Mir ist bekannt, dass ich das Problem beheben könnte, indem ich etwas weniger restriktiv arbeite und eine klassischere Variante vom MVC verwende (also beispielsweise das Model an die View übergebe, die die Änderungsmethoden direkt aus dem Model aufruft). Mir ist an der Stelle vor allem wichtig, zu begreifen, warum es nicht funktioniert und wie mein gewünschtes Verhalten funktionieren könnte.
Ich hoffe, dass ich nicht bereits mit den ersten 10 Zeilen alle Leser vergrault habe und dass sich doch der ein oder andere für diese Frage / Problematik interessiert .
Danke im vorhinein für jegliches Feedback!
Java:
..
public static void main(String... args) {
Model m = new Model();
View v = new View();
Controller c = new Controller(m, v);
}
Meine Interpretation von MVC ist relativ strikt und sieht folgendermaßen aus:
- Änderungen am Model werden dem Controller bekannt, indem er per Listener das Model überwacht. Wenn diese Änderung auch eine Aktion bei der View verlangt, ruft der Controller entsprechende Methoden der View auf.
- Wenn etwas in der View geändert wird, wird dies wiederum zum Controller propagiert. Dieser nimmt die tatsächliche Änderung der Daten im Model vor. Die Änderung der View läuft dann indirekt über den ersten Punkt.
Um diese Trennung strikt durchführen zu können und Model und View möglichst wenige Daten mitzugeben, sollte (wie oben in der main-Methode zu sehen) am besten nur der Controller Bescheid über View und Model wissen.
Lange Rede, kurzer Sinn: Das Problem besteht aktuell in den Event-Listenern für Buttons etc. Folgendes funktioniert leider nicht (um genau zu sein, scheint es komplett ignoriert zu werden):
Im Controller-Konstruktor:
Java:
...
Controller(Model m, View v) {
this.m = m;
this.v = v;
v.getButton().addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent se) {
System.out.println("Test-Message");
}
});
}
Mir ist bekannt, dass ich das Problem beheben könnte, indem ich etwas weniger restriktiv arbeite und eine klassischere Variante vom MVC verwende (also beispielsweise das Model an die View übergebe, die die Änderungsmethoden direkt aus dem Model aufruft). Mir ist an der Stelle vor allem wichtig, zu begreifen, warum es nicht funktioniert und wie mein gewünschtes Verhalten funktionieren könnte.
Ich hoffe, dass ich nicht bereits mit den ersten 10 Zeilen alle Leser vergrault habe und dass sich doch der ein oder andere für diese Frage / Problematik interessiert .
Danke im vorhinein für jegliches Feedback!