Domanda

Nella mia applicazione, ho diversi componenti che devono sapere gli uni degli altri, come ad esempio una barra dei menu e una barra degli strumenti che entrambi hanno bisogno di conoscere la tabella per aggiungere o rimuovere posti di lavoro e anche per scoprire quale lavoro è stato selezionato .

Così, ho creato un oggetto chiamato guiMediator che mi passano per ogni oggetto e che si registrano con esso in modo che possano raggiungere l'altro utilizzando quell'oggetto. E 'anche responsabile per generare gli eventi quando i nuovi posti di lavoro vengono aggiunti o di sfondo lavoratori finire il loro lavoro.

Poiché si sa molto circa il sistema, è questo tipo di utilizzo troppa responsabilità in un posto, o si tratta l'uso corretto del modello?

È stato utile?

Soluzione

Normalmente avrei usato il modello di comando per una cosa del genere:

  1. l'utente fa clic sul pulsante "Foo" nella barra dei menu, che esegue il FooButtonClickedCommand.
  2. FooButtonClickedCommand fa quello che si suppone di fare, quindi modifica la vista (barra dei menu, tabelle, ecc) in modo appropriato.

Quindi i comandi conoscere tutti i componenti di visualizzazione, ma l'unica cosa che i vostri componenti vista che devi sapere è quale comando da eseguire quando una data azione è fatto da parte dell'utente.

Altri suggerimenti

Vorrei utilizzare una visualizzazione passiva, che si può leggere su qui .

  • avrebbe messo ogni modulo dietro un'interfaccia
  • Ogni forma sarebbe registrarsi con uno o più oggetti UI
  • L'Oggetto interfaccia utente dovrebbe essere naturalmente organizzata, come il programma di installazione, Entrata, Display, ecc Un word processor può avere solo un oggetto di interfaccia utente per ogni documento. Mentre un controllo della macchina può avere oggetto multiplo per ogni schermo.
  • L'interfaccia è implementata come gusci sottili trasmettere eventi per l'interfaccia utente oggetti ed esponendo i controlli di presentazione, disegno superfici oggetto UI.
  • L'UIObject poi prendere l'input e capisce quale comando oggetto per eseguire
  • l'oggetto Command aggiornerà il modello, poi dire uno o più oggetti dell'interfaccia utente per aggiornare la vista.
  • I UIObjects aggiornano i punti di vista.

Si noti che non fa nulla nulla oltre l'interfaccia utente interfaccia conosce pulsanti, caselle di controllo, e simili. È possibile utilizzare l'interfaccia di astrarre l'implementazione reale via.

Questo vi darà molti vantaggi. In primo luogo sarà documentare come il codice interagisce con l'interfaccia utente, è dare un posto per implementare gli oggetti mock da utilizzare per i test automatici, e, infine, consentire un maggiore spazio nel cambiare l'interfaccia utente.

Per esempio sostituendo i pannelli selezionabili invece di pulsanti di comando. Il modulo sarà quindi solo iniziare a passare gli eventi click dai pannelli al posto del pulsante. Il modulo può rimanere ignoranti del comando effettivo di ciascun widget dovrebbe fare. L'oggetto interfaccia utente si occupa di questo.

suona meglio che l'alternativa ... Ma hey, ho sposato la sorella meno brutto; -)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top