Хорошие стратегии дизайна моделей - PullRequest
1 голос
/ 06 ноября 2011

В настоящее время я работаю над программированием на iOS и не уверен, что мои стратегии реализации программ - лучший способ сделать что-то.

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

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

Мой вопрос, по сути, основан на этой причуде: вы, ребята, настаиваете на том, чтобы ваши модели работали независимо от контроллера View, или это нормально, что они переплетаются и зависят друг от друга.

Ответы [ 3 ]

1 голос
/ 06 ноября 2011

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

Ваш контроллер должен выполнять всю работу по посредничеству между моделью и представлением.

1 голос
/ 27 июля 2012

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

Например, вы говорите: «Я нахожу свою модель и ВК переплетенными [sic] вместе». Что именно вы подразумеваете под «переплетены»? Контроллер представления знает интерфейс к модели и взаимодействует с ней. Это нормально, правда?

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

Когда вы говорите «мне все еще кажется, что модель не будет функционировать независимо без присутствия вида», это также слишком расплывчато, чтобы я мог конкретно заняться этим, но даже хорошо разработанные модели просто «сидят там». Им нужно что-то стимулирующее их и взаимодействующее с ними. Это может быть тестовый код в одном случае или View Controller в другом. Это не значит, что вы делаете что-то не так.

Если вы посмотрите правый столбец вашего вопроса здесь на SO, вы увидите, по крайней мере, 10 похожих вопросов, касающихся MVC, так что прочитайте:)

1 голос
/ 06 ноября 2011

Модель вообще не должна напрямую общаться с представлением. Модель должна связываться с контроллером представления только в ответ на запрос, сделанный контроллером представления. Контроллер представления должен быть посредником между входными данными, введенными в представление, и данными внутри модели. Определенно важно держать все эти части разделенными. Ваше приложение будет по-прежнему работать, даже если вы этого не сделаете, а в некоторых случаях оно может быстрее использовать ярлыки, но вы настроите себя на большую боль в будущем, когда будете решать все проблемы в будущем. На iTunes Connect есть отличные видео об этом. Особенно видео № 1 в CS193P, которое охватывает MVC, см .:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...