Domanda

Qual è la migliore suddivisione della responsabilità quando si utilizza una griglia virtuale e il modello MVP in un'applicazione winforms.

compreso:

  1. Richiamo delle richiamate dalla griglia sugli aggiornamenti delle celle modificati dall'utente
  2. Richiamata dalla griglia per impostare lo stile e il valore di una cella data una riga e una colonna
È stato utile?

Soluzione

Le responsabilità esatte nei molti modelli che vengono definiti Model-View-Presenter variano. Principalmente variano su quanto controllo viene esercitato sulla vista dal presentatore. Martin Fowler ha discusso in modo approfondito una serie di varianti diverse nel suo capitolo su GUI Architectures , merita una lettura.

Dai un'occhiata a Presenter First in quanto tratta gli adattatori e le responsabilità in un po 'di profondità.

Sia Vista passiva che Supervision Controller vale la pena dare un'occhiata.

modello (o modello di dominio) == rappresentazione logica delle entità coinvolte nel sistema incluso il loro stato e comportamento

presenter == ascolta gli eventi dalla vista (e forse il modello) e soddisfa tali richieste, converte i tipi di modello in tipi di vista (vista passiva), questo è davvero un impianto idraulico per nascondere la vista e il modello l'uno dall'altro. Reagisce allo stimolo dell'utente.

view == presentation: la rappresentazione visiva del modello con cui l'utente può interagire, raccogliendo l'input dell'utente

Le vostre domande specifiche sui callback e sull'ottenimento dello stile della cella della griglia coinvolgeranno entrambi la vista gestendo gli eventi dalla griglia e riportando gli eventi al presentatore per richiedere azioni o recuperare dati dal modello. Questo è perfetto per il callback quando il contenuto della cella viene aggiornato (questo deve essere pubblicato nel presentatore in modo che il presentatore possa convalidare la modifica nel modello e apportare la modifica nel modello). Per lo stile della cella della griglia sto pensando che una sorta di adattatore nella vista potrebbe aver bisogno di tradurre lo stato dal modello (recuperato tramite un evento dalla vista al presentatore) nelle informazioni sullo stile della cella della griglia. Questo potrebbe accadere nel presentatore, ma preferirei personalmente il presentatore di non conoscere il widget nella vista.

Altri suggerimenti

Se ti capisco correttamente, la griglia fa parte dell'implementazione della vista e non è visibile al presentatore. In tal caso, il presentatore non dovrebbe aver bisogno di sapere come vengono visualizzati i dati, ma solo come fornirli.

Probabilmente creerei una classe helper, un adattatore di qualche tipo, con cui la griglia comunica. La griglia non vede altro che questo aiuto, idem per la vista.

La collaborazione sarebbe qualcosa del tipo:

grid < - helper < - visualizza < - > presentatore

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