Chi può cambiare la vista in MVC?

0

Sto lavorando a un'applicazione di visualizzazione e manipolazione di grafici client spessa. Sto provando ad applicare il pattern MVC al nostro componente di visualizzazione 3D.

Ecco cosa ho per il modello, la vista e il controller:

Modello - Il grafico e i suoi metadati. Questo include vertici, bordi e gli attributi di ciascuno. Non contiene informazioni sulla posizione, icone, colori o qualsiasi cosa relativa alla visualizzazione.

Visualizza - Questo sarebbe comunemente chiamato un grafico di scena. Include le informazioni di visualizzazione 3D, le informazioni sulla trama, le informazioni sul colore e qualsiasi altra cosa correlata specificamente alla visualizzazione del modello.

Controller - Il controller prende la vista e la visualizza in una finestra usando OpenGL (ma potrebbe potenzialmente essere un qualsiasi pacchetto di grafica 3D).

L'applicazione ha vari "layout" che cambiano la posizione dei vertici nel display. Ad esempio, un layout può disporre i vertici in un cerchio.

È comune per questi layout accedere e modificare direttamente la vista? Dovrebbero passare attraverso il controller per accedere alla vista? Se passano attraverso il Controller, dovrebbero semplicemente chiedere l'accesso diretto alla View o ogni cambiamento dovrebbe passare attraverso il controller?

Mi rendo conto che questo è un po 'diverso dall'esempio MVC standard in cui esiste un numero finito di Visualizzazioni. In questo caso, la vista può cambiare in un numero infinito di modi. Forse sto distruggendo alcuni principi di base di MVC qui.

Grazie in anticipo!

    
posta Luke 29.11.2011 - 22:31
fonte

2 risposte

1

Ciò che descrivi è più simile a MVP, Supervising Controller o Vista passiva.

    
risposta data 29.11.2011 - 22:55
fonte
0

Sono più familiare con l'implementazione MVC di ASP.NET di Microsoft. MVC non applica la separazione al livello che descrivi.

  • Il modello è essenzialmente un modello del livello dati. Non è direttamente legato alle tabelle del database (cattive pratiche), ma è vicino.
  • La vista è dove si trova l'interfaccia utente. Quindi se questo è web, questo sarebbe HTML / JavaScript o addirittura C # (tramite il rasoio in una pagina View ... ma è necessario lavorare con un progetto MVC3 per tutto ciò che ha senso). Il mio punto è che riguarda la stratificazione, non le lingue. Le applicazioni basate su Windows tendono a utilizzare MVVM piuttosto che MVC, quindi non penso ci sia un vincolo diretto, ma l'interfaccia utente è ancora fondamentalmente la vista.
  • Il controller è l'intermediario tra questi due.

Non c'è molto di più. MVC al suo centro è un design semplice.

Hai anche bisogno di un livello aziendale che lavori a stretto contatto con il controller in tutti i progetti tranne che banali. MVC non ha un livello aziendale definito e sì è corretto e normale aggiungerne uno.

Accesso da Visualizza > La vista diretta non è qualcosa che ho sentito di qualcuno che sta tentando di fare, né lo consiglierei. Per la manutenibilità, è necessario creare livelli paralleli per attività specifiche. La vista dovrebbe essere modificata da sola o tramite chiamate al controller che a sua volta può chiamare il modello, il livello aziendale o qualche altro livello intermedio.

    
risposta data 29.11.2011 - 22:41
fonte

Leggi altre domande sui tag