Benötigen Sie Ratschläge zum Entwerfen von Interaktionen zwischen verschiedenen Teilen meiner Anwendung


10

Ich versuche, die "Haupt" -Klasse (n) einer Rich Desktop-Anwendung auf der Basis von NetBeans Platform 7 zu entwerfen. Diese Anwendung verwendet HTTP-Dienste und empfängt über ein "Push-System" über TCP Nachrichten.

  • Wir sind 3 Entwickler und wollen Module parallel entwickeln
  • Die Anwendung wird geschichtet (Daten, Geschäft, Präsentation)
  • Wir werden das Präsentationsmodell verwenden , um die Verantwortlichkeiten zu trennen
  • Einige granulare Daten (z. B. eine Bean-Person) werden von mehreren Bildschirmen gemeinsam genutzt (und möglicherweise gleichzeitig auf mehreren Bildschirmen angezeigt).
  • ...

Wir können einzelne Bildschirme entwickeln, wissen jedoch nicht genau, wie die gesamte Anwendung organisiert und die einzelnen Modulinhalte definiert werden sollen.

  1. Haben Sie also Ratschläge (ein Muster / eine Best Practice / ein Buch / eine Beispiel-App), um Interaktionen innerhalb der gesamten Anwendung zu koordinieren / zu verwalten?
  2. Irgendwelche Ratschläge zum Definieren von Modulinhalten?

Vielen Dank!


Kleines Beispiel, um zu veranschaulichen, was ich erstellen möchte: Eine Foo User Management-Anwendung

  1. Anwendung starten
  2. Links [Explorer] haben wir eine Liste von Plattformen (Liste wird in einer lokalen Datei gespeichert)
  3. Oben haben wir eine Schaltfläche zum Hinzufügen einer neuen Plattform (auch mit Rechtsklick verfügbar).
  4. Durch Doppelklicken auf eine Plattform ruft die App einen HTTP-Dienst auf, um eine vollständige Liste der Benutzer abzurufen. Diese Liste wird im [Editor] (in einer JTable) angezeigt.
  5. Ein Hintergrundprozess wird gestartet: Über eine TCP-Verbindung erhalten wir Nachrichten
  6. Es ist möglich, einen neuen Benutzer über eine Schaltfläche in einer Symbolleiste hinzuzufügen

Wenn die Anwendung auf einem anderen PC gestartet wird und der Benutzer mit derselben Plattform verbunden ist, wird seine Benutzerliste dynamisch aktualisiert (Hinzufügen / Entfernen / Status: {offline / online}) (dank Nachrichten).

In Zukunft wird ein Chat-Modul bereitgestellt.

Meine Frage ist (mit anderen Worten): Irgendwelche Ratschläge / Best Practices, um über den Inhalt jedes Moduls zu entscheiden? Wenn PM (Präsentationsmodell) eine gute Möglichkeit ist, Ansicht / Geschäft und Daten zu trennen und Bildschirme zu erstellen, wie lassen sich mehrere Bildschirme basierend auf PM am besten verknüpfen? Stellen Sie sich vor, wir entwickeln das Chat-Modul. Wie fügt man dem Kontextmenü, das mit einem Rechtsklick auf Benutzerliste verfügbar ist, einen Eintrag "Diskutieren mit ..." hinzu?


3
Es ist nicht klar, was Sie fragen. Wie wäre es mit einem kleinen Beispiel zur Veranschaulichung Ihrer Frage?
Robert Harvey

Großer Beitrag von Geertjan Wielenga. Enthält Aussagen von Tom Wheeler Aussagen (NetBeans Dream Team Mitglied): java.dzone.com/news/how-to-split-into-modules
Destroyica

Antworten:


5

In Anbetracht Ihrer Anforderung sollte das Kernverarbeitungsmaterial zunächst aus dem Befehlsmuster bestehen. Später können Sie Vorlagenmuster für Anforderungsprozessoren verwenden. Und so weiter und so fort. Es gibt nichts, was als Master-Muster bezeichnet wird. Wenn ja, brauchen sie uns nicht mehr.

Die Idee ist, ein Design zu haben, mit dem Sie sich an die Anforderungen anpassen können.

Ich würde damit beginnen, eine Basismodulschnittstelle zu erstellen und die Schnittstelle allen und einigen Dienstprogrammen in der Umgebung zu geben. Lassen Sie jeden seine eigenen Module basierend auf dem Basismodul implementieren.


3

Ich denke, Sie sehen ein ziemlich klassisches MVC-Muster, das von Diensten unterstützt wird (RESTful, nehme ich an). Der Schlüssel besteht darin, die Dienste von der Benutzeroberfläche zu trennen. Dies liegt nicht daran, dass Sie eine alternative Benutzeroberfläche einführen, sondern daran, dass Sie Klarheit darüber erhalten, wie Ihre Serviceschnittstelle aussehen sollte.

Wenn Sie also über den getPeopleDienst nachdenken, stellen Sie sicher, dass Sie darüber nachdenken, wie eine sekundäre Benutzeroberfläche (ohne Swing) mit dem Dienst interagieren würde. Wenn Sie dies berücksichtigen, werden Sie eine ziemlich flexible / entkoppelte Lösung finden.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.