Dann habe ich es eh nie richtig angewendet und macht das ganze aber auch nicht attraktiver für mich. 🙃
Da würde mich interessieren, was Du anders (falsch?) gemacht hast?
Die Problematik bei JavaFX ist aus meiner Sicht, dass es da nicht wirklich sauber trennbar ist. Da muss der Controller gewisse "aktive" Parts mit übernehmen bzw. Wissen über den internen Aufbau der View bekommen, obwohl er das eigentlich nicht möchte. Und das Model, das eigentlich nur die Geschäftslogik sein soll und nichts Oberflächen-typisches haben soll, dem wird dann UI typisches aufgezwungen (Also die Verwendung von Property Klassen und so)....
Bei dem M V VM (Model View ViewModel) hat man das dann wieder etwas sauberer, denn dann hat man das eigentliche Model (Also die Business Dinge ohne jegliche JavaFX Dinge...) die View (die dann aus fxml und controller besteht) sowie dem ViewModel, das als Layer zwischen Model und View dient und so das Binding ermöglicht. (Bei mvvmFX dann z.B. mit Nutzen von Klassen aus dem Package de.saxsys.mvvmfx.utils.mapping).
@mrBrown Oder liege ich hier auch noch einem Missverständnis auf was mvc bei JavaFX angeht?
MVC sinnvoll eingesetzt habe ich in dem Sinne eigentlich nur im Web Bereich:
- Die Controller bieten nach außen die Schnittstelle an (Also mit Annotations wie z.B. @RequestMapping, die einem Path / Method etwas zuweisen und dabei gewisse Dinge erwarten - also Parameter vorgeben, die dann im Path oder Request vorhanden sein müssen)
- Model ist dann einfach eine Art Vertrag, welche Daten der Controller an die View zu übergeben hat.
- Die View nutzt die Daten vom Model um diese anzuzeigen und damit etwas zu machen und kann dann auf die bereitgestellte Schnittstellen der Controller zugreifen.
Geht im Web sehr schön, denn da habe ich nicht plötzlich eine Instanz vom Controller auf die ich relativ beschränkt bin. Ich kann auch beliebige Controller zugreifen, da ich halt beim Web die Requests habe. Da interessiert mich nicht wirklich, welcher Controller das genau macht. Also wenn ich dann ein request an some/path/someEntity/someId mit Post Abgebe, ist der genaue Controller egal. Die View kennt keinen konkreten Controller sondern lediglich die Info, dass die Applikation da einen Post Request annehmen kann. Das eine sehr schöne Trennung ist, denn genau das möchte ich ja haben! Ich will die Implementierungsdetails von Controller, View und Model möglichst frei und unabhängig voneinander ändern können. Und wenn der Controller dann die Controls der View kennt, dann ist das meiner Meinung nach kontraproduktiv.
Das ist so meine Sicht darauf...