Chi deve registrare gli ascoltatori di input: il controller o la vista? (MVC)

5

Uso un SDK (C ++) (Marmalade) e costruisco un progetto attorno al pattern MVC. Sulla mia app, i listener di input dell'utente possono essere registrati su determinati elementi dell'interfaccia utente / widget / etc fornendo una funzione di callback adeguata (secondo MVC dovrebbe essere un metodo di un controller, giusto?).

In questo scenario, chi dovrebbe registrare questi listener:

  • Il controller? (deve avere accesso agli elementi dell'interfaccia utente della vista, meno disaccoppiamento del controllo dalla presentazione)
  • O la vista? (accesso diretto agli elementi dell'interfaccia utente, ma deve avere un riferimento al controller, non è errato in MVC?)

Tra i due, penso che quest'ultimo abbia più senso e faccia una migliore separazione delle preoccupazioni, ma temo di aver trascurato qualche problema con quel progetto.

Grazie in anticipo.

    
posta pedrosanta 20.05.2012 - 08:10
fonte

2 risposte

3

Dipende dal tipo di MVC che vuoi. Ti suggerisco di provare la "umile finestra di dialogo" di Michael Feather , che è anche chiamata "model view presenter (MVP)", e probabilmente quello che stai cercando.

In questa variante, la vista ha un riferimento al controller e il controller ha un riferimento a un'interfaccia astratta della vista. Quindi la vista può fornire metodi per la registrazione degli ascoltatori, quei metodi sono anche disponibili nell'interfaccia e il controller chiamerà questi metodi senza avere accesso diretto all'interfaccia utente.

    
risposta data 20.05.2012 - 08:23
fonte
0

Se comprendo correttamente la domanda, e dubito che lo faccia, la risposta è nessuna delle precedenti. La registrazione degli ascoltatori di eventi con le loro fonti dovrebbe generalmente essere responsabilità di una terza parte, un costruttore di qualche tipo che costruisce il sistema e lo avvia.

    
risposta data 20.05.2012 - 09:06
fonte

Leggi altre domande sui tag