Das beste Service Locator Muster-Tutorial im Jahr 2024. In diesem Tutorial können Sie Realisierung,Schritt 1,Schritt 2,Schritt 3,Schritt 4,Schritt 5,Schritt 6,Schritt 7, lernen
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.
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.
Erstellen Sie eine Service-Schnittstelle Dienst.
Service.java
public interface Dienst { public String getName (); public void execute (); }
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"; } }
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; } }
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); } } }
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; } }
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 (); } }
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