- PVSM.RU - https://www.pvsm.ru -
Не нашел блога «веб-программирование», разместил тут. Укажите, пожалуйста, другой блог, если не прав.
Все знают про паттерн MVC.
Постоянно спрашиваю на собеседовании, определение дают похожее. А вот с пониманием проблема — из-за неоднозначности определения (слишком общее). У каждого понимание разное.
Пример. Есть метеостанция. На ней имеется:
— датчики температуры, скорости ветра и давления, преобразующие физические сигналы в электрический (пусть для простоты аналоговый);
— компьютерная модель, делающая предсказания. в нее поступают входные электрические сигналы с датчиков;
— и есть мониторы, которые умеют в разных красивых графиках все выводить.
Задача: разбейте по M,V,C.
В моем понимании:
— датчики это стопроцентно контроллеры. они принимают входные данные, преобразуют к одному виду и передают в модель;
— модель — она и есть модель;
— а мониторы (плюс построители графиков) — это, конечно, представление.
НО!
Нередкие следующие случаи
— датчики люди тоже засовывают в модель. либо интуитивно, либо утверждая, что логика проверки данных и преобразования в один формат это тоже к модели относится.
— отрисовыватели графиков также засовывают в модель. хотя это renderers чистой воды, представление;
и так далее.
Это я к чему? Не стоит полагаться на MVC как на супер-основу, особенно если вы только начали программировать и пришли сразу в web (я до web несколько лет был прикладным программистом, и там бизнес-логика, UI и т.д. хочешь или нет, а приходится разделять).
Почитайте дополнительно книги по проектированию с использованием предметной области. К примеру, «Быстрая разработка ПО» [1] Роберта Мартина, или Domain Driven Design [2].
Там более узкие, более четкие определения, что к чему относится. Что исключить неоднозначность в разработке и позволит более грамотно проектировать архитектуру ваших приложений.
В комментариях прошу Вас разместить линки на хорошие книги по проектированию архитектуры приложений.
Автор: Cord
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/programmirovanie/8369
Ссылки в тексте:
[1] «Быстрая разработка ПО»: http://www.ozon.ru/context/detail/id/1573723/
[2] Domain Driven Design: http://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%B1%D0%BB%D0%B5%D0%BC%D0%BD%D0%BE-%D0%BE%D1%80%D0%B8%D0%B5%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%BD%D0%BE%D0%B5_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5
Нажмите здесь для печати.