Frage

So für ein aktuelles Projekt, gibt es grundsätzlich drei Haupt Java-Klassen:

  1. GUI
  2. Instant Messaging
  3. Berechnung

Im Wesentlichen muss es volle Kommunikation sein, so haben wir beschlossen, den Mediatoransatz zu verwenden, anstatt als erlauben den GUI das gesamte Projekt auszuführen.

Grundsätzlich ist der Mediator geht um die Kommunikation zu kapseln. Das Problem, das wir in laufen haben, ist, wie die GUI-Komponenten zu ermöglichen, ohne den Aufbau einer Tonne Methoden für den Mediator zu aktualisieren jederzeit anrufen etwas abgeschlossen ist.

Ex. Sprechen Sie das GUI will in den Benutzer anmelden, es dem Mediator geht durch einen Thread zu erstellen und melden Sie sich an, aber dann hat der Mediator den Erfolg / Misserfolg zurück zu GUI Relais sowie eine Statusmeldung aktualisieren.

Das andere Problem ist, die Dinge, die die GUI aktualisieren müssen aber nicht den Moderator benötigen. Ist es sinnvoll, damit nur die GUI eine Instanz dieser Klasse erstellen und ausführen oder alles durch den Vermittler gehen?

Unser ursprünglicher Entwurf hatte gerade die GUI alles verwalten, aber es ist wirklich Wiederverwertbarkeit getötet. Gibt es eine bessere Design-Methode in diesem Fall zu benutzen?

War es hilfreich?

Lösung

Wenn Sie Observer sind zu finden, zu viel Aufwand zu bringen, kann Mediator der beste Weg zu gehen. Ich denke auf jeden Fall, dass Sie nicht die GUI laufen die Show haben sollte. Wenn Sie das Mediator Muster verwenden werden, sollte der Vermittler selbst verantwortlich sein. Etwas, das man betrachten könnte, ist eine Variante der Command-Muster. Wenn Sie wurden mit Rubin, könnte ich Funktion übergeben Rückrufe um als Mittel zur Vermeidung empfehlen für jede Kleinigkeit der Mediator Kontakt mit dem GUI mit. Aber da es Java, in irgendeiner Form eine Aktion in Command Muster Stil Einkapseln kann helfen.

Andere Tipps

Wenn Sie nicht der Rückruf / notification wollen durch den Vermittler getriggert werden, können Sie den Rückruf in die Login-Funktion injizieren und haben es Login aufrufen, wenn es fertig ist.

Ich weiß nicht, wie Sie über Injektion der Rückruf in Java gehen würde, wenn. In einer Sprache, wo Funktionen Bürger erster Klasse sind, könnten Sie passieren nur die Funktion, aber Sie sind in Java also denke ich, Sie den Befehl Muster haben zu verwenden, wie kmorris vorgeschlagen.

Das könnte Sie auch versuchen, die GUI der Mediator ein Rückrufobjekt geben, die die Rückgabewerte oder Einstellung Griffe Abrufen von was auch immer Sie (eine Version des Command-Muster) Werte müssen. Es würde dann eine von der GUI an den Mediator pro Anruf sein.

Ein weiterer Gedanke der Gruppe ist die Methoden der Mediator in semantisch verwandte Stücke nennt. Insbesondere wenn der Mediator hat Abschnitte, in denen es mehr GUI Methoden in einer Reihe zu nennen neigt:

   gui.a()
   gui.b()
   gui.c()

Sie können eine einzelne Methode erstellen, die das Ergebnis kümmert sich um alle drei zu nennen. Der Vorteil von semantisch gruppiert Methoden (das heißt setFileInformation über setFileMenu, setTab, etc.) ist auch dann, wenn Sie die GUI ändern müssen, können die Inhalte der Methoden ändern, aber der Ruf der Mediator macht auch nicht.

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