¿Qué patrones de diseño se utilizan en Spring Framework?
Respuestas:
Se utilizan muchos patrones de diseño diferentes, pero hay algunos obvios:
Singleton: los beans definidos en los archivos de configuración de Spring son singleton por defecto.
Método de plantilla: se utiliza ampliamente para tratar con código repetido estándar (como cerrar conexiones limpiamente, etc.). Por ejemplo JdbcTemplate , JmsTemplate , JpaTemplate .
Actualice los siguientes comentarios: Para MVC, es posible que desee leer la Referencia de MVC
Algunos patrones obvios en uso en MVC:
Controlador de vista de modelo :-). La ventaja de Spring MVC es que sus controladores son POJO en lugar de servlets. Esto facilita la prueba de los controladores. Una cosa a tener en cuenta es que solo se requiere que el controlador devuelva un nombre de vista lógica, y la selección de la vista se deja en un ViewResolver separado . Esto facilita la reutilización de controladores para diferentes tecnologías de visualización.
Controlador frontal . La primavera proporciona DispatcherServlet para garantizar que una solicitud entrante se envíe a sus controladores.
View Helper : Spring tiene una serie de etiquetas JSP personalizadas y macros de velocidad para ayudar a separar el código de la presentación en las vistas.
Foo
y recupera la instancia de Foo
por contexto, obtendrá dos referencias de objeto diferentes. En cambio, el patrón de diseño aplicado aquí es el peso mosca
En realidad, lo DI es una especie de patrón de estrategia. Siempre que desee que se pueda intercambiar alguna lógica / implementación, generalmente encontrará una interfaz y un método de establecimiento apropiado en la clase de host para conectar su implementación personalizada de esa interfaz.
Spring es una colección de patrones de API de mejores prácticas, puede escribir una lista de compras de ellos siempre que lo haga. La forma en que está diseñada la API te anima (pero no te obliga) a seguir estos patrones, y la mitad del tiempo los sigues sin saber que lo estás haciendo.
Patrón de localizador de servicios: ServiceLocatorFactoryBean mantiene información de todos los beans en el contexto. Cuando el código del cliente solicita un servicio (bean) usando el nombre, simplemente ubica ese bean en el contexto y lo devuelve. El código del cliente no necesita escribir código relacionado con Spring para localizar un bean.
Patrón de método de fábrica: BeanFactory para crear una instancia de un objeto Singleton: el tipo de instancia puede ser singleton para un contexto Prototipo: el tipo de instancia puede ser prototipo. Patrón de constructor: también puede definir un método en una clase que será responsable de crear una instancia compleja.
Spring container genera objetos bean dependiendo del alcance del bean (singleton, prototipo, etc.). Así que esto parece implementar el patrón Abstract Factory . En la implementación interna de Spring, estoy seguro de que cada alcance debe estar vinculado a una clase de tipo de fábrica específica.