Service Locator Muster
Service Locator Muster (Service Locator Muster) für die Verwendung bei der Positionierung wollen wir, wenn JNDI-Lookup-Dienste zu nutzen. Unter Berücksichtigung der JNDI-Lookup hohen Preis für einen Dienst, der Muster Service Locator die volle Nutzung von Caching-Technologie. In der ersten Anforderung für einen Dienst, den Dienst in der JNDI-Lookup-Service-Locator, und speichert das Dienstobjekt. Bei den gleichen Dienst erneut startet, sieht der Service Locator in seinem Cache, die Anwendungs-Performance zu einem großen Teil zu verbessern. Im Folgenden ist ein Unternehmen von diesem Design-Muster.
- Service (Service) - Service die Anfrage tatsächlich Handhabung.Verweise auf diese Dienstleistungen finden Sie unter JNDI-Server zu finden.
- Kontext / Initial Context - JNDI Kontext mit einem Service , den Sie einen Verweis finden möchten.
- Der Service Locator (Service Locator) - Service - Locator ist durch JNDI - Lookup und Caching - Services einen Single Point of Contact Service zu erhalten.
- Cache (Cache) - ein Verweis auf den Cache - Speicher - Services, um sie wieder zu verwenden.
- Client (Client) - Client - Objektaufruf des Dienstes durch Servicelocator.
Realisierung
Wir schaffenServicelocator,Initial, Cache, Service als ein Unternehmen verschiedene Objekte darstellt.Service1undService2repräsentieren Unternehmen Dienstleistungen.
ServiceLocatorPatternDemo,unsere Demo - Klasse hier als Client verwendet werdenServicelocatorService Locator Design - Muster zu demonstrieren.
Schritt 1
Erstellen Sie eine Service-Schnittstelle Dienst.
Service.java
public interface Dienst { public String getName (); public void execute (); }
Schritt 2
Erstellen Sie eine Serviceeinheit.
Service1.java
public class Service1 implementiert Dienst { public void execute () { System.out.println ( "Executing Service1"); } @Override public String getName () { return "Service1"; } }
Service2.java
public class Service2 implementiert Dienst { public void execute () { System.out.println ( "Executing Service2"); } @Override public String getName () { return "Service2"; } }
Schritt 3
Erstellen Sie eine Abfrage für die JNDI Initial.
InitialContext.java
public class {Initial public Object-Lookup (String jndiName) { if (jndiName.equalsIgnoreCase ( "SERVICE1")) { System.out.println ( "Auf der Suche nach oben und ein neues Dienste1 Objekt erstellen"); return new Service1 (); } Else if (jndiName.equalsIgnoreCase ( "SERVICE2")) { System.out.println ( "Auf der Suche nach oben und ein neues Service2 Objekt erstellen"); return new Service2 (); } return null; } }
Schritt 4
Erstellen Cache Cache.
Cache.java
Import java.util.ArrayList; Import java.util.List; public class Cache { private List <Service> Dienstleistungen; public Cache () { Dienstleistungen = new Arraylist <Service> (); } Öffentliche-Dienst getService (String service) { für (Service-Service: Dienstleistungen) { if (service.getName (). equalsIgnoreCase (servicename)) { System.out.println ( "Returning Cache" + service + "Objekt"); Return-Service; } } return null; } public void addService (Service newService) { boolean existiert = false; für (Service-Service: Dienstleistungen) { if (service.getName (). equalsIgnoreCase (newService.getName ())) { = True existiert; } } if (! vorhanden) { services.add (newService); } } }
Schritt 5
Erstellen Sie einen Service Locator.
ServiceLocator.java
public class Servicelocator { private static Cache-Cache; static { Cache = new Cache (); } public static Dienst getService (String jndiName) { Service-service = cache.getService (jndiName); if (Service! = null) { Return-Service; } Initial context = new Initial (); Service service1 = (Service) context.lookup (jndiName); cache.addService (service1); Rückkehr service1; } }
Schritt 6
VerwendenServicelocatorden Service Locator Design - Muster zu demonstrieren.
ServiceLocatorPatternDemo.java
public class ServiceLocatorPatternDemo { public static void main (String [] args) { Service-service = ServiceLocator.getService ( "Service1"); service.execute (); service = ServiceLocator.getService ( "Service2"); service.execute (); service = ServiceLocator.getService ( "Service1"); service.execute (); service = ServiceLocator.getService ( "Service2"); service.execute (); } }
Schritt 7
Stellen Sie sicher, ausgegeben.
Nachschlagen und ein neues Service1-Objekt erstellen ausführen von Service1 Nachschlagen und ein neues Service2 Objekt erstellen ausführen von Service2 Rückkehr gecached Dienste1 Objekt ausführen von Service1 Rückkehr gecached Service2 Objekt ausführen von Service2