Frage

In meiner Anwendung habe ich mehrere Komponenten, die umeinander wissen müssen, wie eine Menüleiste und eine Werkzeugleiste, die beide brauchen, um über den Tisch wissen Jobs hinzuzufügen oder zu entfernen und auch, um herauszufinden, welchen Job ausgewählt ist .

Also, Ich habe ein Objekt namens guiMediator, die ich zu jedem Objekt übergeben und sie registrieren sich mit ihr, so dass sie sich gegenseitig das Objekt unter Verwendung erreichen können. Er ist auch verantwortlich Ereignisse auszulösen, wenn neue Arbeitsplätze hinzugefügt oder Hintergrund Arbeiter ihre Arbeit beenden.

Da es viel über das System weiß, ist diese Art der Nutzung zu viel Verantwortung an einem Ort, oder ist dies die korrekte Verwendung des Musters?

War es hilfreich?

Lösung

Normalerweise würde ich den Befehl Muster für so etwas verwenden:

  1. Benutzer klickt auf die "Foo" -Taste auf Menüleiste, die die FooButtonClickedCommand ausführt.
  2. FooButtonClickedCommand tut, was es tun soll, dann die Ansicht ändert (Menüleiste, Tabellen usw.) angemessen.

So Ihre Befehle über alle Ihre Ansicht Komponenten kennen, aber das einzige, was Ihrer Meinung nach Komponenten wissen müssen, ist, die auszuführenden Befehl, wenn eine bestimmte Aktion durch den Benutzer durchgeführt wird.

Andere Tipps

würde ich eine passive Ansicht verwenden, die Sie lesen können über hier .

  • Sie würden hinter einer Schnittstelle setzen jede Form
  • Jede Form würde registrieren, sich mit einem oder mehreren UI-Objekte
  • Das UI-Objekt natürlich organisiert werden soll, wie Setup Eintrag, Display, usw. Ein Textverarbeitungsprogramm nur ein UI-Objekt für jedes Dokument haben kann. Während eine Maschinensteuerung mehr Objekte für jeden Bildschirm haben kann.
  • Die Schnittstelle implementiert werden als dünne Schalen auf Ereignisse an die UI-Objekte vorbei und Präsentation steuert Belichten Oberflächen an den UI-Objektzeichnungs.
  • Die UIObject nehmen dann die Eingabe und findet heraus, welches Objekt Befehl auszuführen
  • Das Befehlsobjekt wird das Modell aktualisieren, sagt dann einem oder mehr UI-Objekten um die Ansicht zu aktualisieren.
  • Die UIObjects die Ansichten aktualisieren.

Beachten Sie, dass nirgendwo etwas über die UI-Schnittstelle macht weiß über Schaltflächen, Kontrollkästchen, und dergleichen. Sie verwenden die Schnittstelle zu abstrahieren, die tatsächliche Umsetzung entfernt.

Dies wird Ihnen mehrere Vorteile. Zunächst wird es dokumentieren, wie Sie Ihren Code mit der Benutzeroberfläche interagiert, geben Sie einen Platz Mock-Objekte zu implementieren, für automatisierte Tests zu verwenden, und schließlich erlauben viel mehr Spielraum in der Benutzeroberfläche zu ändern.

Zum Beispiel Ersetzen klickbare Platten statt Befehlsschaltflächen. Das Formular wird dann starten Sie einfach die Click-Ereignisse statt der Schaltfläche von den Platten vorbei. Das Formular kann in Unkenntnis des tatsächlichen Befehls bleibt jedes Widget tun soll. Die UI-Objekt kümmert sich darum.

Sounds besser als die Alternative ... Aber hey, ich heiratete die am wenigsten hässliche Schwester; -)

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