Пройдясь по университету и следуя за развитием SO, я много слышал об архитектурном шаблоне Model-View-Controller. Я случайно использовал шаблон MVC еще до того, как я понял, что это такое, и все еще использую его в своей повседневной работе. Из того, что я видел, это, вероятно, самый популярный образец, используемый сегодня. То, о чем я мало слышал, - это альтернативные шаблоны, которые вы можете использовать вместо MVC. Какие существуют варианты и по каким причинам вы решили использовать их поверх MVC? Мне также интересно знать типы систем, для которых они типичны для использования. Наконец, каковы плюсы и минусы, которые приходят вместе с ними?Какие альтернативы доступны для контроллера модели?
ответ
- Passive View - http://martinfowler.com/eaaDev/PassiveScreen.html
- Контроль Контроллер - http://martinfowler.com/eaaDev/SupervisingPresenter.html
- Model-View-Presenter - http://martinfowler.com/eaaDev/ModelViewPresenter.html
Мой личный фаворит Passive View. Более проверяемый, чем другие, которые я видел, включая MVC.
Я иногда видел MVC без C, где вид прослушивает изменения в данных модели и соответственно изменяет рендеринг, а также методы, связанные с обработчиками событий для представления.
Для проектов, где представление по необходимости тесно связано с данными (например, когда есть визуальные компоненты, которые непосредственно связаны с моделью или атрибутами модели), это может быть весьма полезно, поскольку оно вырезает " средний человек ".
Я думаю, многие утверждают, что это все еще MVC, просто гибридизированная версия и что привязки, установленные между представлением и моделью, являются логикой контроллера.
Ну, есть Model-View-Presenter, но я думаю, вы обнаружите, что наиболее распространенной альтернативой MVC является отсутствие надлежащего разделения. В качестве крайнего примера рассмотрим классические страницы ASP, где HTML, VBScript и SQL находятся рядом друг с другом в одном файле. (Это не бас ASP - вы найдете много таких примеров на других языках.)
Хотя приведенные выше ответы верны, я думаю, что гораздо важнее отметить, что слова «шаблон дизайна» полностью неизвестно 90% всех людей, которые создают программное обеспечение. Они просто начинают писать код.
Задача не выбирает оптимальный подход к проектированию, она убеждает других в том, что дизайн имеет ценность.
Вы можете свернуть собственный MVC с существующей инфраструктурой ASP.NET и по-прежнему сохранять модель обратной обратной связи.
http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx
Семейство Презентация-абстракция-контроль (PAC), моделей, где интерфейс/взаимодействие обрабатываемых иерархии агентов.
В статье википедии не велика http://en.m.wikipedia.org/wiki/Presentation-abstraction-control
В Lift фреймворком мы используем View First подход. В основном представление состоит из одного или нескольких фрагментов (несколько похожих на контроллеров), а фрагменты могут быть вложенными.Это очень хорошо работает с встроенными возможностями обработки XML и Scala.
Некоторые другие архитектурные модели, включая MVC.
Многоуровневые системы
TCP/IP
объектно-ориентированная организация
Model-View-Controller, Презентация-абстракция-контроль, Model View Ведущий и Модель View ViewModel.
Примерами могут быть MVC ASP.NET, Ruby on Rails и множество других.
на основе событий, неявный вызов
Браузер среды (DOM)
трубы и фильтр архитектура
Unix трубы
Хранилище
Таблица Driven Переводчики
Вы также можете найти this paper по Garlan & Шоу на архитектуры программного обеспечения приятный для чтения.
Другим примечательным звеном будет статья об архитектурных узорах по адресу Wikipedia.
Ну, это довольно старый. Я хотел бы упомянуть еще один (в интересах информации для дополнительных знаний) является PresenterFirst patrern
Здесь больше информации на том же:
http://en.wikipedia.org/wiki/Presenter_First
http://www.atomicobject.com/pages/Presenter+First
НТН
Как насчет модели Observer. Если я не ошибаюсь, MVC был представлен в Smalltalk, и после этого появились несколько шаблонов публикации/подписки.
Шаблон наблюдателя (подмножество шаблона публикации/подписания) представляет собой шаблон разработки программного обеспечения, в котором объект, называемый субъектом, ведет список своих иждивенцев, называемых наблюдателями, и автоматически уведомляет их о любых изменениях состояния, обычно путем вызова одного из своих методов. Он в основном используется для реализации распределенных систем обработки событий.
Ex: кнопка «Сохранить» активируется в редакторе, только когда есть данные для сохранения. Другим примером шаблона наблюдателя является архитектура Document View в MFC, где в представлении обновляется при изменении документа.
- 1. Kohana: Какие альтернативы доступны?
- 2. Какие метки контроллера доступны в play2.1?
- 3. Какие альтернативы для RExcel?
- 4. Какие альтернативы для ClickOnce?
- 5. Какие альтернативы для onLocationChanged()?
- 6. Какие технологии доступны для модели публикации/подписки с использованием .NET?
- 7. Какие приложения для разработки баз данных доступны?
- 8. Какие библиотеки журналов Log4j доступны?
- 9. Какие опции доступны для VisualSVNServerHooks.exe?
- 10. Какие книги доступны для OpenLayers?
- 11. Какие уведомления доступны для iCloud?
- 12. Какие редакторы NAnt доступны?
- 13. Какие варианты доступны для корзин для неплатежей?
- 14. Универсальные приложения Windows 10: Какие альтернативы доступны для NATIVELY для отправки и/или приема SMS-сообщений?
- 15. Какие хорошие альтернативы ASIHTTPRequest?
- 16. Какие кодировки доступны Node.js
- 17. Какие видеоформаты доступны?
- 18. Изменить, какие рынки доступны?
- 19. Какие хорошие альтернативы SoundManager2?
- 20. Какие альтернативы барплоту?
- 21. Какие альтернативы GeoEXT?
- 22. Какие альтернативы Threadpool?
- 23. Какие альтернативы pinax существуют?
- 24. Какие альтернативы ReSharper?
- 25. Какие альтернативы PlayN?
- 26. Какие методы доступны в сгенерированной модели/контроллере Sails?
- 27. Какие сборщики мусора доступны для C++?
- 28. Какие форматы доступны для Keys Enum?
- 29. Какие дополнения или утилиты доступны для TFS?
- 30. Какие методы доступны для хранения последовательных файлов?
Существует также Model-View-ViewModel (-Controller), который набирает популярность в пространстве .NET. Вы создаете ViewModel (часто в контроллере), чтобы перейти к представлению, чтобы уменьшить зависимость View от деталей реализации Модели. Это мой любимый. – 2009-09-11 08:01:17
Не пассивно. Посмотрите, что (почти) все веб-фреймворки реализованы? Я не могу думать о каких-либо фреймворках с моей головы, которые построили опрос AJAX для модели, чтобы «уведомлять» о представлении. И в чем разница между пассивным представлением и 3-уровневым? – 2010-05-28 17:11:04