Il modello Model-View-Controller è definito in modo molto preciso, per i dettagli di progettazione? O è un termine, come molti altri, con molte interpretazioni e versioni diverse (che corrispondono alla definizione)?
Mi sono imbattuto in molte "versioni" e interpretazioni del termine MVC. Ad esempio: alcune versioni dichiarano che utilizzando il modello Observer, la vista si registra come osservatore sul modello. Attraverso questo la vista ottiene gli aggiornamenti dal modello quando cambia e può aggiornarsi. Altre versioni sostengono che la vista non deve mai interagire con il modello in alcun modo.
La prima versione proviene dal libro Head First Design Patterns. La seconda versione che ho letto qui su Programmers. Due interpretazioni contraddittorie dei dettagli specifici del design del MVC. E ci sono altri esempi.
La mia domanda è: La definizione del pattern MVC è uno di questi termini interpretati in vari modi, che sono tutti accettabili?
Non sto parlando della definizione della vista superiore del pattern. Questo ha una definizione abbastanza chiara.
Sto parlando di dettagli più specifici del design. Esempi: Si dovrebbe utilizzare Observer per aggiornare la Vista sui cambiamenti del Modello? Gli ordini alla vista da aggiornare devono essere passati ad esso solo tramite il Controller, o possono essere comunicati direttamente dal Modello? Cose come queste.
Le versioni MVC variano in questi dettagli, ma sono ancora tutte adatte alla definizione MVC? O è semplicemente che ci sono molte implementazioni MVC "sbagliate"?