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 (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.

Service Locator Muster UML-Diagramm

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
Service Locator Muster
10/30