Quels modèles de conception sont utilisés dans Spring Framework?
Réponses:
Il existe de nombreux modèles de conception utilisés, mais il en existe quelques-uns évidents:
Singleton - les beans définis dans les fichiers de configuration de printemps sont des singletons par défaut.
Méthode de modèle - largement utilisée pour traiter le code répété standard (tel que la fermeture des connexions proprement, etc.). Par exemple JdbcTemplate , JmsTemplate , JpaTemplate .
Mettre à jour les commentaires suivants: pour MVC, vous souhaiterez peut-être lire la référence MVC
Quelques modèles évidents utilisés dans MVC:
Contrôleur de vue modèle :-). L'avantage de Spring MVC est que vos contrôleurs sont des POJO et non des servlets. Cela facilite les tests des contrôleurs. Une chose à noter est que le contrôleur doit uniquement renvoyer un nom de vue logique et que la sélection de vue est laissée à un ViewResolver distinct . Cela facilite la réutilisation des contrôleurs pour différentes technologies d'affichage.
Contrôleur avant . Spring fournit DispatcherServlet pour garantir qu'une demande entrante est envoyée à vos contrôleurs.
View Helper - Spring possède un certain nombre de balises JSP personnalisées et de macros de vitesse pour aider à séparer le code de la présentation dans les vues.
Foo
et vous récupérez l'instance de Foo
par contexte, vous obtiendrez deux références d'objet différentes. Au lieu de cela, le modèle de conception appliqué ici est poids mouche
La chose DI est en fait une sorte de modèle de stratégie. Chaque fois que vous souhaitez que la logique / l'implémentation soit échangeable, vous trouvez généralement une interface et une méthode de définition appropriée sur la classe hôte pour câbler votre implémentation personnalisée de cette interface.
Spring est une collection de modèles d'API des meilleures pratiques, vous pouvez en rédiger une liste de courses aussi longtemps que votre bras. La façon dont l'API est conçue vous encourage (mais ne vous oblige pas) à suivre ces modèles, et la moitié du temps vous les suivez sans savoir que vous le faites.
Modèle de localisateur de service - ServiceLocatorFactoryBean conserve les informations de tous les beans dans le contexte. Lorsque le code client demande un service (bean) en utilisant name, il localise simplement ce bean dans le contexte et le renvoie. Le code client n'a pas besoin d'écrire du code lié au ressort pour localiser un bean.
Patter de méthode d'usine: BeanFactory pour créer une instance d'un objet Singleton: le type d'instance peut être un singleton pour un contexte Prototype: le type d'instance peut être un prototype. Modèle de générateur: vous pouvez également définir une méthode dans une classe qui sera chargée de créer une instance complexe.
Le conteneur Spring génère des objets bean en fonction de la portée du bean (singleton, prototype etc.). Cela ressemble donc à l'implémentation du modèle Abstract Factory . Dans l'implémentation interne de Spring, je suis sûr que chaque portée doit être liée à une classe de type d'usine spécifique.