Пройдя университет и после развития SO, я много слышал об архитектурном шаблоне Model-View-Controller. Я случайно использовал шаблон MVC еще до того, как я понял, что это такое, и все еще использую его в своей повседневной работе. Из того, что я видел, это, вероятно, самый популярный образец, используемый сегодня. То, о чем я мало слышал, - это альтернативные шаблоны, которые вы можете использовать вместо MVC. Какие существуют варианты и по каким причинам вы решили использовать их поверх MVC? Мне также интересно знать типы систем, для которых они типичны для использования. Наконец, каковы плюсы и минусы, которые приходят вместе с их использованием?
Какие альтернативы существуют для модели-View-Controller?
Ответ 1
- Пассивный вид - http://martinfowler.com/eaaDev/PassiveScreen.html
- Контролирующий контроллер - http://martinfowler.com/eaaDev/SupervisingPresenter.html
- Model-View-Presenter - http://martinfowler.com/eaaDev/ModelViewPresenter.html
Мой личный фаворит - Пассивный вид. Более проверяемый, чем другие, которые я видел, включая MVC.
Ответ 2
Некоторые другие архитектурные шаблоны, включая MVC.
Многоуровневые системы
TCP/IP
Объектно-ориентированная организация
Model-View-Controller, представление-абстракция, просмотр представлений и просмотр модели ViewModel.
Примерами могут быть ASP.NET MVC, Ruby on Rails и множество других.
Событие, неявное обращение
Окружение браузера (DOM)
Архитектура труб и фильтров
Трубы Unix
Хранилища
Переводчики с таблицей
Вы также можете найти эту статью Гарланом и Шоу в области архитектуры программного обеспечения.
Еще одна заслуживающая внимания ссылка - это статья об архитектурных шаблонах в Wikipedia.
Ответ 3
Я иногда видел MVC без C, где view прослушивает изменения в данных модели и соответственно изменяет рендеринг, и где методы в модели привязаны к обработчикам событий для представления.
Для проектов, где представление по необходимости тесно связано с данными (например, когда есть визуальные компоненты, которые напрямую связаны с моделью или атрибутами модели), это может быть весьма полезно, поскольку оно вырезает "средний человек".
Я думаю, многие утверждают, что это все еще MVC, просто гибридизованная версия и что привязки, установленные между представлением и моделью, являются логикой контроллера.
Ответ 4
Ну, там Model-View-Presenter, но я думаю, вы обнаружите, что наиболее распространенной альтернативой MVC является отсутствие надлежащего разделения. В качестве крайнего примера рассмотрим классические страницы ASP, где HTML, VBScript и SQL находятся рядом друг с другом в одном файле. (Это не bash ASP - вы найдете много таких примеров на других языках.)
Ответ 5
Несмотря на то, что приведенные выше ответы верны, я думаю, что гораздо важнее отметить, что слова "шаблон дизайна" полностью неизвестны 90% всех людей, которые создают программное обеспечение. Они просто начинают писать код.
Проблема заключается не в выборе наилучшего подхода к дизайну, а в убеждении других, что дизайн имеет ценность.
Ответ 6
Хорошо, теперь он довольно старый. Я хотел бы упомянуть еще один (в интересах информации для дополнительных знаний) PresenterFirst patrern
Здесь вы найдете более подробную информацию:
http://en.wikipedia.org/wiki/Presenter_First
http://www.atomicobject.com/pages/Presenter+First
НТН
Ответ 7
Семейство шаблонов Presentation-Abstraction-Control (PAC), где интерфейс/взаимодействие обрабатывается иерархией агентов.
Статья в Википедии не велика http://en.m.wikipedia.org/wiki/Presentation-abstraction-control
Ответ 8
В Lift веб-каркас мы используем View Первый. В основном представление состоит из одного или нескольких фрагментов (несколько похожих на контроллеров), а фрагменты могут быть вложенными. Это очень хорошо работает с HTML и Scala встроенными возможностями обработки XML.
Ответ 9
Вы можете свернуть свой MVC с существующей инфраструктурой ASP.NET и по-прежнему сохранять модель обратной копии.
http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx
Ответ 10
Как насчет шаблона Observer. Если я не ошибаюсь, MVC был представлен в Smalltalk, и после этого появились несколько шаблонов публикации/подписки.
Шаблон наблюдателя (подмножество шаблона публикации/подписки) представляет собой шаблон проектирования программного обеспечения, в котором объект, называемый субъектом, ведет список своих иждивенцев, называемых наблюдателями, и автоматически уведомляет их о любых изменениях состояния, обычно вызывая один из своих методов. Он в основном используется для реализации распределенных систем обработки событий.
Пример: кнопка "Сохранить" активируется в редакторе, только когда есть данные для сохранения. Другим примером шаблона наблюдателя является архитектура Document View в MFC, где в представлении обновляется при изменении документа.