Вопрос о Classic MVC - PullRequest
       25

Вопрос о Classic MVC

5 голосов
/ 30 апреля 2010

В классическом MVC модель уведомляет мнение об изменениях, внесенных в нее. В C # это означает, что я должен создать подкласс для интересующего меня представления и регистра класса подкласса для события модели. Например, если бы я должен был реализовать MVC с использованием C # и Winforms, мне пришлось бы создать подкласс класса TextBox, а затем зарегистрироваться в конструкторе MyTextBox для событий модели. Я прав? Как это было выпущено в Smalltalk? Нужно ли также создавать подклассы для каждого представления, чтобы регистрировать события модели, или есть какой-то способ динамически добавлять события в представления на лету?

Спасибо

Ответы [ 2 ]

1 голос
/ 01 сентября 2010

Для решения подвопроса о том, как Smalltalk (из которого происходит MVC) справляется с этим: изначально (это Smalltalk-80, где Trygve Reenskaug реализовал MVC) действительно было необходимо создать подкласс суперклассов представления для регистрации вашего конкретного представления это как подписчик, чтобы изменить события из подкласса конкретной модели. Контроллеры в Smalltalk предназначались только для делегирования или отправки событий окна (особенно клавиатуры и мыши) в модель. По сути, вы можете сказать, что контроллеры модифицировали объекты модели, а представление только показывало их. Однако концепция динамических значений или ValueModels, как их стали называть, сделала этот подход устаревшим в VisualWorks Smalltalk. Теперь вы можете создать стандартную структуру GUI, больше не нужно создавать подклассы, и каждое представление сможет регистрировать себя в качестве наблюдателя в классе абстрактной модели. Модель для представления больше не будет классом модели, а будет моделью значений со стандартным интерфейсом. Подробнее об этом здесь: http://st -www.cs.illinois.edu / users / brant / paper / ValueModel / ValueModels.htm

0 голосов
/ 30 апреля 2010

Я думаю, что шаблон MVP будет более подходящим для вашего пользовательского интерфейса winforms.

Что такое MVP и MVC и в чем разница?

...