Patron Localisateur de services
Le modèle de localisateur de services est utilisé lorsque nous voulons localiser divers services à l'aide de requêtes JNDI. Étant donné que l'exécution d'une recherche JNDI pour un service est coûteuse, le modèle de localisateur de services tire pleinement parti de la technologie de mise en cache. Lorsqu'un service est demandé pour la première fois, le localisateur de services recherche le service dans JNDI et met en cache l'objet de service. Lorsque le même service est demandé à nouveau, le localisateur de services le recherche dans son cache, ce qui peut grandement améliorer les performances de l'application. Voici les entités de ce modèle de conception.
- Service- Le service qui traite réellement les requêtes. Les références à ces services peuvent être trouvées dans le serveur JNDI.
- Contexte / Contexte initial- Le contexte JNDI contient des références aux services à rechercher.
- Localisateur de services- Le localisateur de services est un point de contact unique pour obtenir des services via la recherche JNDI et la mise en cache des services.
- Cache- Le cache stocke des références à des services afin de les réutiliser.
- ClientLe client est un objet qui invoque des services via ServiceLocator.
summary
intention
Utilisé pour fournir un point d'accès centralisé aux services dans une application afin d'obtenir divers services ou ressources.
Problème principal résolu
- Résout le problème consistant à éviter la logique d'accès aux services codée en dur lorsqu'une application doit accéder à divers services ou ressources.
Cas d'utilisation
- Lorsqu'une application doit accéder à plusieurs services ou ressources externes et souhaite gérer de manière centralisée cette logique d'accès.
Approche d'implémentation
- Interface de localisateur de servicesDéfinir des méthodes pour obtenir des services.
- Implémentation du localisateur de services: Implémenter l'interface du localisateur de services, en encapsulant la logique de recherche et d'accès aux services.
- Interface de serviceDéfinir l'interface de service ou le contrat.
- Service concret: Implémenter l'interface de service, en fournissant une fonctionnalité de service spécifique.
Code clé
- Localisateur de servicesContient la logique pour trouver et renvoyer l'instance de service demandée.
- Interface de serviceDéfinir une représentation abstraite du service.
Exemple d'application
- Application d'entreprise: L'application utilise le localisateur de services pour accéder aux services de base de données, aux services de file d'attente de messages, etc.
Avantages
- Découpler l'accès aux services: Sépare la logique d'accès aux services de la logique métier qui utilise les services.
- Gestion centralisée: Les points d'accès aux services sont gérés de manière centralisée, ce qui facilite la maintenance et l'extension.
- FlexibilitéIl est facile d'ajouter, de modifier ou de remplacer des services.
Inconvénients
- Problèmes de performance: Le localisateur de services peut introduire une surcharge de performance, en particulier lorsqu'une recherche est effectuée à chaque demande de service.
- Utilisation excessive: Peut conduire à une mauvaise utilisation du patron de conception, masquant ainsi la structure du système.
Suggestions d'utilisation
- Lorsqu'une application doit accéder à plusieurs services de manière flexible et facile à maintenir, envisagez d'utiliser le patron de localisateur de services.
Notes
- Évitez de dépendre excessivement du localisateur de services, car il peut masquer les dépendances du système, ce qui rend le débogage et l'optimisation difficiles.
Contient plusieurs rôles principaux
-
Interface du localisateur de services:
- Définir des méthodes pour obtenir des services.
-
Implémentation du localisateur de services:
- Implémenter l'interface du localisateur de services, en encapsulant la logique de recherche et d'accès aux services.
-
Interface de service:
- Définir une représentation abstraite du service.
-
Service concret:
- Implémenter l'interface de service, en fournissant des fonctionnalités de service spécifiques.
-
Client:
- Utiliser le localisateur de services pour accéder aux services requis.
Le patron de conception Service Locator aide à simplifier la logique d'accès aux services et à améliorer la flexibilité et la maintenabilité de l'application en fournissant un point d'accès centralisé aux services.
<
Implémentation
Nous allons créerServiceLocator、InitialContext、Cache、ServiceDivers objets représentant des entités.Service1etService2Représentent un service d'entité.
ServiceLocatorPatternDemoLa classe ici agit comme un client et utiliseraServiceLocatorpour démontrer le patron de conception Service Locator.
Étape 1
Créer l'interface de service Service.
Service.java
Étape 2
Crée un service d'entité.
Service1.java
Service2.java
Étape 3
Créer un InitialContext pour les requêtes JNDI.
InitialContext.java
Étape 4
Créer un cache Cache.
Cache.java
Étape 5
Créer un localisateur de services.
ServiceLocator.java
Étape 6
UtilisationServiceLocatorPour démontrer le patron de conception Service Locator.
ServiceLocatorPatternDemo.java
Étape 7
Exécutez le programme, résultat de sortie :
Looking up and creating a new Service1 object Executing Service1 Looking up and creating a new Service2 object Executing Service2 Returning cached Service1 object Executing Service1 Returning cached Service2 object Executing Service2autres extensions