Was ist der controller in Java-Swing?
Ich möchte ein MVC design für meine Java-Anwendung mit Swing in einer sinnvollen Art und Weise. Daher meine Frage, wie würden die regler werden strukturiert in Java-Swing?
Habe ich zwei Möglichkeiten im Auge:
- Jedes Listener-Komponente ist eine eigene Klasse, als Teil der controller-Paket
- Jede Komponente Listener eine anonyme Klasse innerhalb der Sicht-Paket, die Delegierten Ihren Aufruf zu einer Klasse mit controller-Methoden.
Ist beides möglich? Ist es eine Frage der Vorliebe, oder ist das klar definiert?
Siehe auch diese answer.
Bitte beachten Sie, dass MVC kann gut für low-level-Komponenten (z.B. JTextField), aber auf der Anwendungsebene werden die anderen Muster sind in der Regel besser; 2 Muster in den Sinn kommen: MVP und PresentationModel (ich nenne dieses zweite Muster MVPM aber dies ist nicht die offizielle Terminologie).
Bitte beachten Sie, dass MVC kann gut für low-level-Komponenten (z.B. JTextField), aber auf der Anwendungsebene werden die anderen Muster sind in der Regel besser; 2 Muster in den Sinn kommen: MVP und PresentationModel (ich nenne dieses zweite Muster MVPM aber dies ist nicht die offizielle Terminologie).
InformationsquelleAutor Konrad Reiche | 2011-04-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
in Swing Komponenten wie
JButton
etc sind die Controller. und alle listener-Klassen umleiten Ereignisse zu modellieren, die Ihre business LogikBeispiel :
Hauptprogramm
Ansicht
controller
Modell
InformationsquelleAutor Nirmal- thInk beYond
Platzhirsch,
Kumpel, das eine ERNST schwere Frage... eine, die niemand beantworten angemessen in einem forum posten. Dieser Artikel Java SE Application Design With MVC von Robert Eckstein (einer der Java-Götter) behandelt das problem in die Länge.
Persönlich, ich endete-mit einer "Variante" von MVC, die ich rief MBVC (Model-Business-View-Controller), das ist eigentlich ziemlich nah an MVVMC... MVVM ist weit verbreitet .NET cirles; das hinzufügen einer controller-machte Sinn für mich, da hatte ich einige web MVC Erfahrung. Ich wünschte, ich hätte Lesen Sie die oben genannten Artikel, BEVOR ich zu MVC-ise meine app. Können Sie noch Lesen mein lieber perplex posts von Sun (jetzt Oracle) Java Foren.
Cheers. Keith.
InformationsquelleAutor corlettk
Während dem Swing-framework bereits implementiert eine form von MVC (explizite Modelle; JXyz & UI-Klassen = controller & Ansicht), diese strikte Trennung wird selten verwendet, auf Anwendungsebene und sieht ziemlich komisch.
Start schlage ich Folgendes design:
Wenn Sie möchten einen Schritt weiter gehen, verwenden Sie eine RCP, wie die NetBeans-Plattform (sehr empfehlenswert).
InformationsquelleAutor Puce
Aussehen dieses Der MVC-Architektur
InformationsquelleAutor Jignesh Dhua
Ansicht würde umfassen das GUI-design. Die actionPerformed-Methode der view sollte das Ereignis identifizieren, und rufen entsprechende Methoden auf die ControllerInterface je nach Veranstaltung. Die controller-Implementierung umsetzen wird das ControllerInterface, und die Methoden, die aufgerufen werden, indem der Blick wird hier umgesetzt. Diese Methoden werden vermutlich die Interaktion mit dem Modell in gewisser Weise. Das Modell selbst wird eine Möglichkeit haben sich zu registrieren Beobachter (der Ansicht, in diesem Fall; übrigens auch Controller kann registriert werden) und update-Beobachter jedes mal, wenn das Modell sich ändert. Das ist im wesentlichen, wie würden Sie die Struktur Ihrer Anwendung. Für mehr details auf MVC, können Sie auch finden:
hier!
InformationsquelleAutor Dhruv Gairola
Für eine klare Trennung von View und Controller, du könntest es so machen:
Nun konnten wir die Implementierung der verschiedenen Steuerungen, das könnte praktisch sein, wenn wir wollen, verwenden Sie die view-Komponente mit verschiedenen Modellen. Der controller ist ein Strategie der eigentlichen view-Instanz.
In den meisten Fällen ist es einfach genug, um Listener als anonyme Klassen, da Sie meist nur eine Methode aufrufen, die auf die controller-Instanz. Ich benutze die Hörer in der Regel so einfach Disponenten - Sie erhalten eine Benachrichtigung und senden eine Nachricht zu einem anderen Objekt. Eine listener-Klasse implementieren sollte, zu viel business-Logik, das ist, über seine Verpflichtungen.
InformationsquelleAutor Andreas_D
Ja beides ist möglich, aber ich schreib lieber Single Klasse implementiert alle actionListioner und ordnen, dass alle Komponenten in Ihrer app. Auf diese Weise können Sie verfolgen alle Aktionen in Ihrer app auf einem Punkt.
Auch auf diese Weise können Sie Ihre Ansicht Unterscheidung von controller.
InformationsquelleAutor Harry Joy