GWT-EXT - Was ist der beste Weg, um Widgets zu einem bestimmten Content nach einem Ereignisse?

StackOverflow https://stackoverflow.com/questions/111854

  •  02-07-2019
  •  | 
  •  

Frage

erster Beitrag tu mich nicht weh:)

Ich bin mit einem BorderLayout mit dem üblichen Nord, West, Mitte, Süd-Panels. Auf der West ContentPanel, ich habe eine Tree bekam. Wenn ein Ereignis (OnClick) tritt mag ich ein bestimmtes Dialogfeld angezeigt auf dem Zentrum ContentPanel.

Was ist der beste Weg für mich, dies zu tun? Derzeit verwende ich eine Funktion namens returnPanel(), die das Zentrum ContentPanel zurückgibt. In dem Event-Handler nenne ich diese Funktion (MainWindow.returnPanel().add(myDialog)).

War es hilfreich?

Lösung

Die Art und Weise Sie es tun, ist intuitiv und funktioniert, aber beginnt die Hölle zu verursachen, wenn die Anwendung wächst, weil verschiedene Teile der Anwendung sind stark gekoppelt. Die Lösungen für diese Probleme sind die MVC-Entwurfsmuster und die Beobachter-Entwurfsmuster .

Im Idealfall, die MVC-Muster verwenden, Sie wollen keine Widget eines anderen Widget ‚wissen‘. Es gibt nur Klasse, die alle Widgets, weiß, was der Controller ist. Immer wenn ein Widget muss Nachricht / ein anderes Widget signalisieren, es an die Controller-Klasse erzählt, die die Nachricht in geeigneter Weise in dem entsprechenden Widget weiterleitet. Auf diese Weise werden die beiden Widgets decpoupled und man kann, ohne die anderen ändern. Möglicherweise möchten Sie eine ENUM nutzen, um alle möglichen Aktionen aufzuzählen, zu dem die Steuerung zu responsd hat.

Wenn Ihr Widget nur den Controller zu nennen hat, wenn ein Ereignis auftritt, können Sie einfach einen passenden Namen (statisch) Methode auf sie anrufen und mit ihr geschehen. Doch sobald mehrere andere Klassen eines Ereignisses informiert werden muss, sind Sie besser von der Beobachter-Muster verwenden, mit der Sie mehrere andere Klassen zu signalisieren, ermöglicht, ohne die Klasse zu ändern. Es ruft einfach notifyPObservers () in dem Eventhandler und das ist es. Wie viele Zuhörer gibt es, und welche Art sie sind, ist irrelevant. Auf diese Weise entkoppeln Sie auch eine Klasse von ihm Zuhörer ist. Selbst wenn nur der Controller hört, kann es ratsam sein, das Muster zu verwenden, da es eindeutig den ‚Rückruf‘ Code aus dem anderen Code in den Klassen getrennt.

BTW, hat dies nichts insbesondere mit GWT oder auch Java zu tun.

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