Latest web development tutorials

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