Certamente la mia esperienza nell'uso del pattern MVC è limitata. Si potrebbe sostenere che non separo realmente la V dalla C, anche se tengo la M separata dal VC nella misura in cui posso gestirla.
Sto considerando lo scenario in cui il modello dell'applicazione include un numero di elementi che hanno una classe base comune. Ad esempio, personaggi nemici in un videogioco o tipi di forme in un'app di grafica vettoriale. La vista vuole rendere questi elementi. Ovviamente, le diverse sottoclassi richiedono un rendering diverso.
Il problema è che gli elementi fanno parte del modello. Renderli è concettualmente parte della vista. Ma il modo in cui devono essere resi dipende dai parametri di entrambi:
- Gli attributi e lo stato dell'elemento sono parametri del modello
- Le impostazioni utente sono parametri della vista e, per supportare più piattaforme e / o modalità di visualizzazione, è possibile utilizzare diverse viste
Qual è il tuo modo preferito di affrontare questo?
- Inserisci il codice di rendering nelle classi del modello, passando in qualsiasi parametro di visualizzazione?
- Inserisci il codice di rendering nella vista, usando un interruttore o simile per selezionare il giusto rendering per il tipo di elemento del modello?
- Hai alcune classi intermedie come un'interfaccia vista modello, di cui il modello creerà oggetti su richiesta e la vista li renderà poi?
- Qualcos'altro?