Представление MVC старым кодерам спагетти C++?

Я хочу представить идею MVC к набору старых кодеров спагетти C++ (в моем клубе локального компьютера).

Один из них, который имеет большое влияние на остальную часть группы, кажется, наконец получает идею инкапсуляции (в основном частично благодаря этому веб-сайту).

Я надеялся, что мог также указать на него в правильном направлении путем показа ему Образцового Контроллера Представления, но я должен сделать это способом, который имеет смысл ему, а также это, вероятно, должно быть записано в C/C++!

Я понимаю, что MVC является очень старым архитектурным шаблоном, таким образом, мне казалось бы, что должно быть что-то там, которое сделало бы задание.

Я - больше веб-разработчика, таким образом, я задавался вопросом, мог ли кто-либо там, кто хороший кодер C/C++, сказать мне, что это, это заставило выключатель MVC включить в Вашей голове.

7
задан leeand00 25 March 2010 в 15:33
поделиться

3 ответа

Не начинайте с MVC. Начните с публикации / подписки (также известного как шаблон «слушатель»).

Без полного понимания шаблона слушателя преимущества MVC никогда не будут поняты. Каждый может понять необходимость обновлять что-то еще, когда что-то меняется, но мало кто задумывается о том, как это сделать в удобной для обслуживания манере.

Представляйте один вариант за другим, показывая слабые и сильные стороны каждого варианта: превращение переменной в глобальную, слияние другой части кода с держателем переменной, изменение держателя для непосредственного информирования других и, в конечном итоге, создание стандартных средств регистрации намерение слушать.

Затем покажите, как настоящий слушатель может действительно сиять. Напишите небольшой «модельный» класс, добавьте полдюжины «слушателей» и покажите, как вам никогда не приходилось нарушать структуру исходного класса для добавления «удаленных» обновлений.

Как только вы это поймете, перенесите идею в парадигму «модельного представления». Добавьте два или три разных представления на одну и ту же модель, и все удивятся тому, насколько сравнительно легко добавить разные представления одной и той же информации.

Наконец, обсудите необходимость управления представлениями и обновления данных. Обратите внимание, что ввод частично зависит от элементов, которых нет в представлении или модели (например, от клавиатуры и мыши). Представьте идею централизации обработки, при которой «контроллеру» необходимо координировать, какие модели создавать и поддерживать в памяти, а какие представления представлять пользователю.

Как только вы это сделаете, у вас будет довольно хорошее введение в MVC.

9
ответ дан 6 December 2019 в 19:35
поделиться

Получите немного спагетти-кода C ++ (их?), Отрефакторите его для использования MVC и покажите им, какие преимущества он имеет, например, более простое модульное тестирование, повторное использование моделей, внесение локализованных изменений в представление с меньшим беспокойством и т. Д.

1
ответ дан 6 December 2019 в 19:35
поделиться

Возможно, вам будет проще продавать их с помощью шаблонов «Документ / Просмотр» или «Документ / Презентатор». MVC был изобретен на Smalltalk, где все, что касалось различных элементов пользовательского интерфейса, должно было быть закодировано разработчиком (как я понимаю, никогда не использовал эту вещь). Таким образом, элемент контроллера был необходим, потому что не было таких вещей, как TextElement :: OnChange. В наши дни более современный GUI API использует Document / View, но Document / Presenter - это то, что я видел.

Вы также можете прочитать статью Роберта Мартина о фреймворке TaskMaster.

Вы также можете подумать, что любой разработчик C ++, который не знаком с этими шаблонами и уже понимает их назначение и необходимость, является либо полным новичком, либо нежелательным занятием. Такие люди приносят больше вреда, чем пользы, и, как правило, слишком высокомерны, чтобы узнавать что-то новое, иначе они уже узнали бы это.

3
ответ дан 6 December 2019 в 19:35
поделиться