Общие шаблоны проектирования для использования в веб-приложениях MVC

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

Итак, какие шаблоны вы нашли, чтобы хорошо вписаться в правильное приложение MVC. Возможно, что-то для асинхронных процессов, запланированных задач, работы с электронной почтой и т. д. Что вы хотели бы знать, чтобы искать или избегать?

Не то чтобы это имело значение для этого вопроса, но мы используем ASP.NET и Rails для большинства наших приложений.


person csexton    schedule 29.11.2008    source источник


Ответы (4)


После того, как вы освоите MVC, может оказаться полезным изучить шаблоны, выходящие за рамки книги «Банда четырех», и ознакомиться с «Шаблоны архитектуры корпоративных приложений."

Шаблон Реестр может быть полезен для обеспечения доступности общеизвестных объектов во всей иерархии объектов. По сути, заменяет использование глобальных данных.

Многие фреймворки MVC также используют Front Controller и Двухэтапное представление.

«Модель» в MVC лучше всего проектировать как шаблон Модель предметной области, хотя некоторые фреймворки (во главе с Rails) объединить модель с ActiveRecord. Я часто советую, что связь между Моделью и ActiveRecord должен быть HAS-A, а не IS-A.

Также прочтите о ModelViewController на вики-сайте Portland Pattern Repository. Есть хорошее обсуждение MVC, объектной ориентации и других шаблонов, дополняющих MVC, таких как Observer.

person Bill Karwin    schedule 29.11.2008
comment
у вас есть примеры в ASP.NET MVC, где был реализован шаблон реестра? - person J86; 23.01.2015
comment
@Ciwan, извини, я никогда не касался ASP.NET. Вы можете поискать примеры в гугле так же легко, как и я. - person Bill Karwin; 24.01.2015

Этот вопрос настолько открыт, что трудно дать правильный ответ. Я мог бы сказать вам, что шаблон Observer важен в MVC (и для веб-приложений), и это был бы хороший ответ. Почти все существующие шаблоны проектирования распространены в больших веб-приложениях. Вам потребуется использовать Factory для создания сложного объекта, а для доступа к некоторым разделам требуется Facade.

Если вам нужны дополнительные «советы» или хороший опыт вместо шаблона проектирования, я бы посоветовал вам использовать IoC и использование хороших Framework вместо того, чтобы начинать с нуля. Я могу предложить вам объяснить преимущества хорошей ORM Engine, чтобы ускорить уровень сохраняемости (обычно также может исходить из Framework).

person Patrick Desjardins    schedule 29.11.2008

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

Тем не менее, я обнаружил, что я являюсь поклонником модели Provider за то, что у нее есть несколько вариантов для выполнения одной задачи с добавлением простоты развертывания. Кроме того, шаблон Unit of Work отлично подходит для установки границ транзакций. Однако в значительной степени архитектура и бизнес-потребности диктуют подход, применяемый для любого данного изменения кода или новой разработки.

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

person Joseph Ferris    schedule 29.11.2008

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

person krosenvold    schedule 29.11.2008