Frage könnte schwierig sein (wegen seiner Natur oder meiner Art, es zu beschreiben), also lies das wirklich, bevor du antwortest.MVC für Desktop-App ohne Datenschicht
Ich habe diese App zu schreiben:
a) Desktop-App;
b) keine Datenschicht im Sinne von Datenbank, Dateien oder einem anderen Repository (keine Speicherung, Speicherung oder Laden von Daten);
c) App wird einige Berechnungsalgorithmen implementiert haben (Genetic Algorithm);
b) stellt eine GUI zur Verfügung, die Steuerelemente für App- und Berechnungsergebnisse anzeigt.
Ich denke über die Verwendung von MVC-Muster, aber ich habe Zweifel, wie man es benutzt. Da ich keine Datenschicht im Sinne von (zum Beispiel) Datenbank habe (Daten werden während der Ausführung auf der Basis von Benutzereingaben erzeugt), mache ich mir Gedanken über die Verwendung von MVC in dieser Implementierung. Bis jetzt bin ich mit zwei Annäherungen gekommen:
GUI ist die Ansicht. GeneticAlgorithm ist der Controller. GeneticAlgorithmResults ist das Modell (als Klasse, die nur Daten speichert). Grundlegender Fluss:
- Die Ansicht sendet Benutzereingaben an den Controller;
- Der Controller verarbeitet Benutzereingaben und generiert Daten;
- Der Controller sendet generierte Daten an das Modell;
- Das Modell benachrichtigt die Ansicht über neue Daten;
- Die Ansicht zieht neue Daten und aktualisiert die Anzeige.
GUI ist die Ansicht. AppEngine ist der Controller. GeneticAlgorithm nad GeneticAlgorithmResults sind das Modell. Jetzt haben wir:
- Die Ansicht sendet Benutzereingaben an den Controller;
- Der Controller verarbeitet Benutzereingaben und sendet Steuersignale an das Modell.
- Das Modell aktualisiert seinen internen Status (generiert neue Daten);
- Das Modell benachrichtigt den Controller über neue Daten;
- Der Controller zieht Daten zum Modell;
- Der Controller verarbeitet Daten;
- Der Controller sendet verarbeitete Daten an den View;
- Die Ansicht aktualisiert die Anzeige.
Erster Ansatz scheint einfacher und eher wie MVC zu sein. Das Problem ist, dass einige Logik im Modell sein müsste - entscheiden Sie, wann das Modell benachrichtigt werden soll, da nicht alle Datenaktualisierungen angezeigt werden, oder dass die Anzeige mit den Datensätzen nicht mit jeder kleinen Änderung aktualisiert wird. Diese Entscheidungen basieren auf Benutzereingaben. Was mehr ist, kann eine zusätzliche Verarbeitung der Daten vor der tatsächlichen Anzeige erforderlich sein. Dies wäre in der Ansicht.
Auf der anderen Seite scheint der zweite Ansatz komplizierter zu sein und es sieht so aus, als würden viele Nachrichten übergeben, um die Aufgabe zu erfüllen.Aber es gibt dem Controller volle Kontrolle über Logic und trennt die Verantwortlichkeiten der View, des Controllers und des Modells (was der Hauptzweck von MVC ist).
Welchen Ansatz würden Sie empfehlen? Oder sollte ich sie vielleicht mischen und erste Anflugarchitektur mit Kommunikationsfluss vom zweiten Ansatz verwenden? Oder ein anderes Design?