2011-11-04 3 views
1

Si j'ai un constructeur GUI qui construit ma première interface et à cette interface, j'attache un observateur qui détecte quand un certain champ dans cette interface est mis à jour alors dois-je faire l'un des suivants;Observateur Motif confusion

1) créer interface1 à partir du constructeur puis attacher un observateur pour que le constructeur puisse savoir quand une certaine tâche est terminée 2) Est-ce que je crée un observateur et ensuite l'observateur crée l'interface?

Fondamentalement, j'essaye de créer une interface du constructeur, qui alors, sur un clic de bouton va et obtient des données. Lorsque ces données ont été récupérées, je veux que la classe du constructeur le sache afin de pouvoir l'utiliser pour construire l'interface 2. J'essaie d'utiliser le modèle de conception de l'observateur pour le faire.

Merci

Répondre

3

Vous devez créer l'interface, puis ajouter (ou vous inscrire/attach) les observateurs concernés par la suite. Quelque chose comme (en pseudocode);

GUI mygui = GUIBuilder.createNewGUI(); 

ButtonListener OK = new OKButtonListener(); 
ButtonListener Cancel = new CancelButtonListener(); 
DataListener dataReady = new dataReadyListener(); 

mygui.registerButtonListener(OK); 
mygui.registerButtonListener(Cancel); 
mygui.registerDataListener(dataReady); 

mygui.show(); 

Si toutes les interfaces graphiques que vous construisez aura les mêmes auditeurs attachés, vous pouvez avoir le constructeur d'interface créer et de joindre les auditeurs pour vous aussi.

+0

désolé pour le manque de compréhension ici, mais est-ce tout ce qui se passe à l'intérieur de la classe de constructeur. Je suis juste inquiet d'avoir des auditeurs dans la classe des constructeurs qui cassent la conception axée sur la responsabilité – Biscuit128

+0

Les classes XXXListener sont les observateurs. Le mygui est l'observable. – Robin

+0

donc nous avons une classe d'observateur pour chaque contrôle que nous voulons surveiller? – Biscuit128