Hallo frankx,
Genau das war ja der Ansatz. Keine direkten speichermethodenabhängigen Queries im Controller. Jetzt verstehe ich Dich so, dass Du sagst: im Model auch nicht, denn das Model ist das logische Abbild der Datenstruktur, auch unabhängig von der Speichermethode. Klingt plausibel. Dann kommt dann also noch eine Speicherklasse dazu, wie ja auch u. und o.g..
Richtig.
Jau, das war das, was mir nicht "geheuer" war. Aber bei Hibernate ist ja ein guter Hinweis, was zB. etwaige Methoden, Parameter und Namenskonstrukte angeht.
Ja.
Aber doch auch der Kohäsion wegen, oder? Das Model soll einen Benutzer rausrücken können, aber es muss nicht wissen, wie er gespeichert ist. Sind das nicht zwei Aufgabenbereiche?
Doch, von daher auch der Kohäsion wegen, aber man muss erstmal feststellen, dass es zwei Bereiche sind ;-)
komisch...
Liegt vielleicht daran, dass sich MVC eben nicht um die Speicherung kümmert, sondern um die Bedienoberfläche. Speicherung ist sozusagen auf der anderen Seite des Modells.
Ich dachte Singleton erlaugt nur _eine_ Instanz.
Naja, ein Beispiel: Irgendwelche Konfigurationsdaten für Dein Programm sind per Singleton zugreifbar:
Config config = Config.getInstance();
Nun könntest Du irgendwo eine Methode haben, die die Konfiguration benötigt:
void tuWas(Config config)
Statt die Konfiguration mitzugeben, könnte sich die Methode die Konfiguration auch selbst holen, so hast Du aber leicht die Möglichkeit, den Singleton später durch etwas anderes zu ersetzen und die Methode mit verschiedenen Konfigurationen aufzurufen.
Im Prinzip das gleiche, wie bei einer globalen Variable. Du kannst den Wert immernoch an einigen Stellen als Parameter übergeben, statt direkt auf die Variable zuzugreifen. Damit hast Du die Möglichkeit, die globale Variable wieder abzuschaffen.
Außerdem könnte ein Singleton natürlich noch irgend welche Schnittstellen implementieren. Das sind zugegebenermaßen alles eher technische Gründe. Singleton ist aber auch nicht viel mehr als ein Hilfskonstrukt, in denen man direkt einzelne Objekte angeben kann, benötigt man das ja ohnehin nicht.
Grüße
Daniel