Hi,
ich habe mal wieder einige Struktur-Fragen zur Umsetzung des MVC-Konzepts. Ein wirklich zufriedenstelliges Ergebnis werde ich wohl selbst nie hinbekommen, weil ich - was die grundsätzliche Strukturerkennung und deren Umsetzung angeht einfach ziemlich schlecht bin... Das gilt bei mir leider im Programmieren allgemein so. Wer da Tipps zur Verbesserung hat, darf mir gerne mal schreiben
MVC ist aber schon mal keine schlechte Übung und die macht es ja im Endeffekt aus
ALSO:
1.) Mir ist noch nicht ganz klar, welche Daten ich jetzt im Model halte und welche in der View. Kann man generell sagen, dass die View wirklich nur dazu dient darzustellen und sonst nichts? Bsp: Ich habe einige JComboBoxen mit einer Auswahl von verschiedenen Werten, z.B. unterschiedliche Währungen. Die Währungen befinden sich in der DB. Frage: Wie gelangen sie jetzt korrekt in die Comboboxen?
Ein möglicher Ansatz:
Ich habe im Model für jede "Datenbündel" (z.B. Währungen) eine Liste. Gemäß OOP hat mein Model also eine Liste mit Währungsobjekten. Diese Liste muss ich ja befüllen, was ich z.B. im Controller auslösen kann a la model.retrieveCurrencies() und im Model ein Select abgesetzt wird, was mir dann alle Währungen in der DB holt, instanziiert und dann auf die Liste setzt.
Für all diese Vorgänge habe ich ja einen eigenen ModelListener, der danach die View informiert (View registriert sich bei dem Model als Listener), dass die Währungen "geladen" wurden und daraufhin die entsprechende ComboBox gefüllt wird.
Wäre das so korrekt?
2.) Alle Listener für die Komponenten wie Textfelder oder Auswahllisten habe ich im Controller. Ist das wirklich so ratsam? Problem ist folgendes:
Bei einem ausgelösten Ereignis brauche ich nicht immer nur den Wert oder den Zustand der auslösenden Komponente, die ja als Event im Listener übergeben wird, sondern auch Zustände/Werte von anderen Komponenten. Dh. das ich ja eigentlich für alle relevanten Komponenten Getter benötigen würde, damit der Controller sich entsprechendes holen kann. Bei einem gewissen Viewumfang kann das aber schnell überhand nehmen und scheint mir auch nicht wirklich "sauber". Was wäre da die Alternative?
Listener in die View packen und dort drinnen via controller.doSomething() arbeiten, würde das ganze ja erleichtern...
So... das war erst mal meine kleine Fragestunde Ich würde mich freuen, wenn ich das ein oder andere beantworten bekommen könnte.
Möchte den Thread dann auch nur für weitere Fragen bzgl. MVC nutzen, die sich mir immer wieder stellen.
ich habe mal wieder einige Struktur-Fragen zur Umsetzung des MVC-Konzepts. Ein wirklich zufriedenstelliges Ergebnis werde ich wohl selbst nie hinbekommen, weil ich - was die grundsätzliche Strukturerkennung und deren Umsetzung angeht einfach ziemlich schlecht bin... Das gilt bei mir leider im Programmieren allgemein so. Wer da Tipps zur Verbesserung hat, darf mir gerne mal schreiben
MVC ist aber schon mal keine schlechte Übung und die macht es ja im Endeffekt aus
ALSO:
1.) Mir ist noch nicht ganz klar, welche Daten ich jetzt im Model halte und welche in der View. Kann man generell sagen, dass die View wirklich nur dazu dient darzustellen und sonst nichts? Bsp: Ich habe einige JComboBoxen mit einer Auswahl von verschiedenen Werten, z.B. unterschiedliche Währungen. Die Währungen befinden sich in der DB. Frage: Wie gelangen sie jetzt korrekt in die Comboboxen?
Ein möglicher Ansatz:
Ich habe im Model für jede "Datenbündel" (z.B. Währungen) eine Liste. Gemäß OOP hat mein Model also eine Liste mit Währungsobjekten. Diese Liste muss ich ja befüllen, was ich z.B. im Controller auslösen kann a la model.retrieveCurrencies() und im Model ein Select abgesetzt wird, was mir dann alle Währungen in der DB holt, instanziiert und dann auf die Liste setzt.
Für all diese Vorgänge habe ich ja einen eigenen ModelListener, der danach die View informiert (View registriert sich bei dem Model als Listener), dass die Währungen "geladen" wurden und daraufhin die entsprechende ComboBox gefüllt wird.
Wäre das so korrekt?
2.) Alle Listener für die Komponenten wie Textfelder oder Auswahllisten habe ich im Controller. Ist das wirklich so ratsam? Problem ist folgendes:
Bei einem ausgelösten Ereignis brauche ich nicht immer nur den Wert oder den Zustand der auslösenden Komponente, die ja als Event im Listener übergeben wird, sondern auch Zustände/Werte von anderen Komponenten. Dh. das ich ja eigentlich für alle relevanten Komponenten Getter benötigen würde, damit der Controller sich entsprechendes holen kann. Bei einem gewissen Viewumfang kann das aber schnell überhand nehmen und scheint mir auch nicht wirklich "sauber". Was wäre da die Alternative?
Listener in die View packen und dort drinnen via controller.doSomething() arbeiten, würde das ganze ja erleichtern...
So... das war erst mal meine kleine Fragestunde Ich würde mich freuen, wenn ich das ein oder andere beantworten bekommen könnte.
Möchte den Thread dann auch nur für weitere Fragen bzgl. MVC nutzen, die sich mir immer wieder stellen.
Zuletzt bearbeitet: