2010-04-29 18 views
5

Nel classico MVC il modello notifica la visualizzazione delle modifiche apportate su di esso. In C# questo significa che devo sottoclasse la vista a cui sono interessato e nel registro di classe sottoclasse all'evento del modello. Ad esempio, se dovessi implementare MVC utilizzando C# e Winforms, ho dovuto sottoclasse la classe TextBox e quindi registrarmi all'interno del costruttore di MyTextBox per gli eventi del modello. Ho ragione? Come è stato pubblicato su Smalltalk? Occorre anche creare una sottoclasse di ogni vista per registrare gli eventi del modello oppure esiste un modo per aggiungere dinamicamente eventi alle viste al volo?Domanda Informazioni su Classic MVC

Grazie

risposta

1

Per affrontare il sub-domanda su come Smalltalk (da cui MVC origine) gestisce questo: in origine (questo è Smalltalk-80, dove Trygve Reenskaug implementato MVC) Era infatti necessario creare una sottoclasse le superclassi vista per la tua vista specifica registrarlo come abbonato per cambiare gli eventi da una sottoclasse di modello concreta. I controllori in Smalltalk dovevano delegare o inviare solo eventi finestra (specialmente tastiera e mouse) al modello. Fondamentalmente si può dire che i controllori hanno modificato gli oggetti del modello e solo la visualizzazione li ha mostrati. Tuttavia, il concetto di valori dinamici, o ValueModels come sono stati chiamati, ha reso obsoleto questo approccio in VisualWorks Smalltalk. Ora è possibile creare una struttura GUI standard, senza necessità di creare una sottoclasse e ogni vista sarebbe in grado di registrarsi come osservatore a una classe modello astratta. Il modello per la vista non sarebbe più una classe di modello ma un modello di valore con un'interfaccia standard. Più su questo: http://st-www.cs.illinois.edu/users/brant/papers/ValueModel/ValueModels.htm

+0

Nice (+1) Detto questo, c'è una ragione per cui Adele non ha mai scritto il libro e solo "L'arte nera di programmazione MVC" per "sparlare le cose .... Il controller sempre inquinato con la vista e il modello di informazioni specifiche, che è ciò che ha portato al cambiamento di visualworks - anche ad altri modelli più recenti come MVP (Model-View-Presenter) –