Шаблон проектирования Model View Controller (MVC) - Как связать несколько видов с несколькими моделями? - PullRequest
0 голосов
/ 05 августа 2011

Пример сценария: 5 представлений на экране, каждое из которых увеличивает цвета радуги на один цвет при каждом нажатии.

В соответствии с дизайном MVC, кажется, рекомендуется использовать модель, представляющую собой массив целых чисел или что-то в этом роде, и каждый раз, когда нажимается вид, он сообщает контроллеру: «Эй, я нажал, просто к вашему сведению»и затем попросите контроллер сказать «хорошо, я увеличу ваше соответствующее место в массиве на единицу», а затем пусть модель скажет «я изменился, кто бы ни заботился», а затем в представлении будет сказано: «Я забочусь, поэтому я будупоменяй мой цвет сейчас ".

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

Кроме того, рекомендуется ли хранить идентификатор с представлением?Как еще делегат узнает, какой из них был нажат?Тогда соответствующий идентификатор должен быть сохранен с моделью?Это начинает напоминать мне о спагетти-подобных таблицах mysql ...

В любом случае, просто хочу убедиться, что я правильно понял.

ps- Я знаю, что нет никаких других мирскихубедить, что MANDATES я использую MVC абсолютно идеально каждый раз, но все же хотел бы знать, что считается правильным в этом сценарии:)

1 Ответ

2 голосов
/ 05 августа 2011

В некоторых случаях инвестирование в структуру программы может показаться излишним.Будем ли мы применять шаблоны проектирования в программе «Hello World»?Нужно ли добавлять комментарии к нему?Нет «Лучших практик», есть только «Соответствующие практики в этой ситуации».

Ваша установка - это минималистская система с тривиальной моделью и тривиальными отношениями - следовательно, MVC может быть излишним.Особенности приложения:

  1. Интересной модели нет.Увеличение одного значения не влияет на любое другое значение.
  2. Не существует интересного контрольного требования.Нажатие одной кнопки не приводит к изменению состояния, кроме немедленной кнопки.
  3. Это звучит как одноразовая программа без будущих требований к обслуживанию.

Теперь давайте подумаем об однойВозможные изменения в приложении: оно постоянно.Когда вы запустите его завтра, он восстанавливает состояние из базы данных, каждый раз, когда вы нажимаете кнопку, вам нужно сохранить состояние.

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

Возможно, я читаю слишком много в вашем вопросе, но это звучит немного похоже на то, что вам трудно ориентироваться в существующем приложении MVC.Это аналогичная реакция на то, что я видел, когда кто-то писал небольшие программы, когда сталкивался со структурированной или ОО-программой: они разочарованы, потому что нет единого потока, которому нужно следовать, вы не можете легко увидеть общую структуру.Одна вещь, которую нам нужно научиться делать, это уметь использовать черный код для кода.Сфокусируйтесь на одном из них (например, на контроллере) и временно рассматривайте модель и вид как черный ящик.Я чувствую себя почти «переключающим передачи», когда я перемещаюсь от одного аспекта к большой системе.

...