Frage

Ich habe eine gewisse Logik Domain in einer Reihe von POJOs implementiert. Ich möchte eine Swing-Benutzeroberfläche schreiben, damit der Benutzer zu initiieren und die Ergebnisse verschiedener Domain Aktionen.

Was ist die beste Muster / Rahmen / Bibliothek für die Kommunikation zwischen der Benutzeroberfläche und der Domäne? Dies läuft darauf hinaus, in:

  • die Benutzeroberfläche in der Lage, eine Benutzergeste in eine Domäne Aktion
  • zu konvertieren
  • die Domain-Informationen Zustand / Ergebnis zurück zu senden für die Anzeige auf die Benutzeroberfläche in der Lage

Ich bin mir dessen bewusst MVC als weit gefasster Begriff und haben mit dem Beobachter-Muster (dessen Java-Implementierung hat einige Nachteile, wenn ich das richtig verstehe) getüftelt, aber ich frage mich, ob eine anerkannte Best Practice für dieses Problem gibt es?

War es hilfreich?

Lösung

Auf jeden Fall MVC - so etwas wie diese Beispiel die eindeutig spaltet die Dinge aus. Das Problem mit den Swing-Beispiele ist, dass sie die MVC arbeiten alle innerhalb des Swing Sachen zu zeigen scheinen, die nicht richtig zu mir scheint

Andere Tipps

MVC ist fantastisch für ein individuelles Widget, aber es ist ein wenig bekommt widerspenstig, wenn Sie pages und forms mit vielen Widgets haben.

Eine Sache, die in wert sein könnte suchen (und ich befürworte es nicht, ich habe es nicht tatsächlich verwendet wird, nur etwas sehr ähnliches für mich implementiert) ist der Beans Binding Framework (JSR295 )

Ich habe das Beobachter-Muster (mit AspectJ Magie) in der Vergangenheit mit einig Erfolg, aber festgestellt, dass, wenn Sie vorsichtig waren es schnell zu einem Cluster wurde .. uhh .. flick?

Es wurde hart, um schnell zu verwalten und vor allem extrem schwer zu debuggen.

Edit:

Um etwas auf meine Antwort zu erweitern, wir wurden mit SWT , nicht schwingen, so YMMV . Wir benutzten im Grunde AspectJ die Übertragung von Daten von den UI-Komponenten auf die Modell-Objekte zu anschließen. Diese Modellobjekte waren stumm POJOs.

Die tatsächliche Geschäftslogik wurde kreiert von der ‚Beobachtung‘ das Modell mit AspectJ-Objekte und das gewünschte Ereignis abzufeuern, wenn sie geändert. Also, wenn Sie einen Wert in einer Textbox geändert würde AspectJ Feuer und diesen Wert in ein POJO kopieren. Wenn das Feld in der POJO hatte ein Event auf es für Business-Logik das würde und Feuer. Wenn diese Logik keine POJOs geändert (und es könnte) AspectJ würde den Wert aus der POJO in die UI-Komponente erkennen und kopieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top