Al pasar por la universidad y siguiendo el desarrollo de SO, he escuchado mucho sobre el patrón de diseño arquitectónico Model-View-Controller. Inadvertidamente utilicé el patrón MVC incluso antes de saber qué era, y todavía lo uso en mi trabajo diario. Por lo que he visto, es probablemente el patrón más popular que se usa hoy en día. De lo que no he escuchado mucho, son los patrones alternativos que puedes usar en lugar de MVC. ¿Qué opciones hay, y por qué razones decidirías usarlas a través de MVC? También me interesa conocer los tipos de sistemas para los que son típicos. Finalmente, ¿cuáles son los pros y contras que vienen con el uso de ellos?¿Qué alternativas hay para Model-View-Controller?
Respuesta
- pasiva Vista - http://martinfowler.com/eaaDev/PassiveScreen.html
- Supervisar Controller - http://martinfowler.com/eaaDev/SupervisingPresenter.html
- Modelo-Vista-Presentador - http://martinfowler.com/eaaDev/ModelViewPresenter.html
Mi favorito personal es el Ver pasiva. Más comprobables que otros que he visto, incluido MVC.
Ocasionalmente he visto MVC sin la C, donde la vista escucha los cambios en los datos del modelo y altera la representación en consecuencia, y donde los métodos en el modelo están vinculados a los manejadores de eventos para la vista.
Para proyectos donde la vista es por necesidad estrechamente unida con los datos (como cuando hay componentes visuales que se relacionan directamente con el modelo o atributos del modelo), esto puede ser útil, ya que corta el " hombre del medio ".
Creo que muchos argumentarían, sin embargo, que esto sigue siendo MVC, solo una versión hibridada, y que los enlaces establecidos entre la vista y el modelo son lógica del controlador.
Bueno, hay Model-View-Presenter, pero creo que encontrará que la "alternativa" más común a MVC es realmente la falta de separación adecuada. Como ejemplo extremo, considere las páginas ASP clásicas donde HTML, VBScript y SQL se encuentran uno al lado del otro en el mismo archivo. (Eso no es un golpe de ASP: encontrará muchos ejemplos en otros idiomas.)
Aunque las respuestas anteriores son bastante correctas, creo que es mucho más importante tener en cuenta que las palabras "patrón de diseño" están completamente desconocido para el 90% de todas las personas que crean software. Simplemente comienzan a escribir código.
El desafío no es seleccionar el mejor enfoque de diseño, es convencer a otros de que el diseño tiene valor.
Puede rodar su propio MVC con el marco actual de ASP.NET y aún conservar el modelo de devolución de datos.
http://www.codeproject.com/KB/aspnet/RollingYourOwnMVCwithASP.aspx
La familia Presentación-Abstracción-Control (PAC) de patrones, donde interfaz/interacción es manejado por una jerarquía de agentes.
artículo de Wikipedia no es muy grande http://en.m.wikipedia.org/wiki/Presentation-abstraction-control
En el marco Lift web que utilizamos un enfoque View First. Básicamente, una vista se compone de uno o más fragmentos (algo similar a los controladores) y los fragmentos se pueden anidar.Esto funciona muy bien con las capacidades de procesamiento XML integradas de HTML y Scala.
Algunos otros patrones arquitectónicos que incluyen MVC.
Sistemas acodadas
TCP/IP
Organización orientada a objetos
Modelo-Vista-Controlador, Presentación-abstracción de control, Modelo Vista Presentador y Vista de modelo ViewModel.
Ejemplos serían ASP.NET MVC, Ruby on Rails y muchos otros.
evento basado, invocación implícita
entorno de navegador (DOM)
Pipe y el filtro arquitectura
tuberías Unix
Repositorios
por tablas Intérpretes
También puede encontrar this paper por Garlan & Shaw en Arquitectura de Software una buena lectura.
Otro enlace digno de mención sería el artículo sobre patrones arquitectónicos en Wikipedia.
Bueno, ya es bastante viejo. Me gustaría mencionar una más (en aras de la información para el conocimiento adicional) es PresenterFirst patrern
Aquí hay más información sobre la misma:
http://en.wikipedia.org/wiki/Presenter_First
http://www.atomicobject.com/pages/Presenter+First
HTH
¿Qué pasa con el patrón Observer? Si no me equivoco, MVC se introdujo en Smalltalk y, posteriormente, varios patrones de publicación/suscripción han entrado en escena.
El patrón de observador (un subconjunto del patrón de publicación/suscripción) es un patrón de diseño de software en el que un objeto, llamado sujeto, mantiene una lista de sus dependientes, llamados observadores, y los notifica automáticamente sobre cualquier cambio de estado. generalmente llamando a uno de sus métodos. Se usa principalmente para implementar sistemas distribuidos de manejo de eventos.
Ej .: El botón Guardar se habilita en una edición, solo cuando hay datos para guardar. Otro ejemplo del patrón de observadores es la arquitectura Document View en MFC, donde en la vista se actualiza cuando cambia el documento.
¡Díganos! ¿Cuáles son los beneficios de este patrón? –
- 1. ¿Qué alternativas hay para ClickOnce?
- 2. ¿Qué alternativas de Visio para Mac hay?
- 3. ¿Qué alternativas hay para el pinax?
- 4. ¿Qué alternativas hay para usar global.asax?
- 5. ¿Qué alternativas hay para el Editor de MATLAB?
- 6. hay alternativas a yUML
- 7. Google Ads no es compatible con HTTPS. ¿Qué alternativas hay?
- 8. ¿Qué alternativas existen para WCF Test Client?
- 9. ¿Hay alternativas al polimorfismo en C++?
- 10. ¿Hay algunas alternativas buenas y modernas para Javadoc?
- 11. Sandcastle: ¿aún es lo correcto para usar? ¿O hay alternativas?
- 12. GLUT Alternativas para Haskell?
- 13. Alternativas para MBProgressHUD?
- 14. R2PPT falla R; ¿Hay alternativas a R2PPT?
- 15. Compatibilidad de EGit - o hay alternativas?
- 16. ¿Qué alternativas a Hans Boehm GC existen para dispositivos pequeños?
- 17. ¿Qué otras alternativas existen para el registro log4net?
- 18. ¿Alternativas prometedoras para hacer?
- 19. Alternativas para el patrón singleton?
- 20. Alternativas para Pow en windows?
- 21. ¿Qué alternativas de gestión automática de recursos existen para Scala?
- 22. ¿Alternativas PHP?
- 23. ¿Qué son alternativas a Java VM?
- 24. ¿Hay alternativas más seguras a la clase .Net SQLConnection?
- 25. Alternativas eficientes para exponer una Colección
- 26. ¿Qué situaciones exigen el uso de eval() porque no hay alternativas?
- 27. Alternativas para hacer para linux/freebsd?
- 28. Alternativas PropertyGrid
- 29. Nabaztag alternativas?
- 30. NAnt Alternativas
También hay Model-View-ViewModel (-Controller), que está ganando popularidad en el espacio .NET. Usted crea un ViewModel (a menudo en el controlador) para pasar a la vista y reducir la dependencia de la vista en los detalles de implementación del modelo. Es mi favorito actual. –
No es pasivo ¿Ver qué (casi) todos los frameworks web implementan? No puedo pensar en ningún marco fuera de mi cabeza que haya construido una encuesta AJAX para que el Modelo "notifique" la Vista. ¿Y cuál es la diferencia entre Passive View y 3 niveles? –