Latest web development tutorials

pola pelayanan Locator

pola pelayanan Locator (layanan Locator Pola) untuk digunakan dalam penentuan posisi kita ingin menggunakan layanan JNDI lookup saat. Mempertimbangkan JNDI lookup harga tinggi untuk layanan, Layanan Locator pola penuh penggunaan teknologi caching. Dalam permintaan pertama untuk layanan, layanan di JNDI lookup layanan locator, dan cache objek layanan. Ketika meminta layanan yang sama lagi, layanan locator terlihat dalam cache, yang dapat meningkatkan kinerja aplikasi untuk sebagian besar. Berikut ini adalah entitas dari pola desain ini.

  • Service (layanan) - layanan benar-benar menangani permintaan.Referensi untuk layanan ini dapat ditemukan di server yang JNDI.
  • Konteks / Initial konteks - JNDI konteks dengan layanan yang Anda ingin mencari referensi.
  • Layanan locator (Service Locator) - layanan locator adalah melalui pencarian dan caching layanan JNDI untuk mendapatkan satu titik layanan kontak.
  • Cache (Cache) - referensi ke layanan penyimpanan cache, dalam rangka untuk menggunakan kembali mereka.
  • Client (klien) - Klien objek permintaan dari layanan melalui ServiceLocator.

realisasi

Kami akan membuatServiceLocator,InitialContext, Cache, Service sebagai entitas mewakili berbagai objek.Service1danService2mewakili layanan entitas.

ServiceLocatorPatternDemo,kelas demo kami di sini sebagai klien, akan digunakan untuk menunjukkan layananServiceLocatorpola desain locator.

pola pelayanan Locator diagram UML

Langkah 1

Buat Layanan layanan antarmuka.

Service.java

antarmuka publik Layanan {
   public String getName ();
   public void mengeksekusi ();
}

Langkah 2

Membuat badan layanan.

Service1.java

public class Service1 mengimplementasikan layanan {
   public void mengeksekusi () {
      System.out.println ( "Pelaksana Service1");
   }

   @ Override
   public String getName () {
      kembali "Service1";
   }
}

Service2.java

public class Service2 mengimplementasikan layanan {
   public void mengeksekusi () {
      System.out.println ( "Pelaksana Service2");
   }

   @ Override
   public String getName () {
      kembali "Service2";
   }
}

Langkah 3

Membuat query untuk JNDI InitialContext.

InitialContext.java

public class InitialContext {
   Obyek publik lookup (String jndiName) {
      jika (jndiName.equalsIgnoreCase ( "Service1")) {
         System.out.println ( "Melihat ke atas dan menciptakan objek Service1 baru");
         kembali Service1 baru ();
      } Lain jika (jndiName.equalsIgnoreCase ( "service2")) {
         System.out.println ( "Melihat ke atas dan menciptakan objek Service2 baru");
         kembali Service2 baru ();
      }
      kembali null;		
   }
}

Langkah 4

Buat Cache Cache.

Cache.java

impor java.util.ArrayList;
import java.util.List;

public class Cache {

   swasta List <Layanan> jasa;

   Cache publik () {
      layanan = new ArrayList <Layanan> ();
   }

   publik Layanan getService (String serviceName) {
      untuk (Service layanan jasa) {
         jika (service.getName (). equalsIgnoreCase (serviceName)) {
            System.out.println ( "Kembali cache" + serviceName + "objek");
            layanan kembali;
         }
      }
      kembali null;
   }

   public void addService (Layanan newService) {
      boolean ada = false;
      untuk (Service layanan jasa) {
         jika (service.getName (). equalsIgnoreCase (newService.getName ())) {
            ada = true;
         }
      }
      if (! ada) {
         services.add (newService);
      }
   }
}

Langkah 5

Buat locator layanan.

ServiceLocator.java

public class ServiceLocator {
   pribadi Cache statis tembolok;

   statis {
      Cache = new Cache ();		
   }

   public static Layanan getService (String jndiName) {

      Layanan = cache.getService (jndiName);

      jika (layanan! = null) {
         layanan kembali;
      }

      InitialContext konteks = baru InitialContext ();
      Layanan service1 = (layanan) Context.lookup (jndiName);
      cache.addService (service1);
      kembali service1;
   }
}

Langkah 6

GunakanServiceLocatoruntuk menunjukkan pola desain layanan locator.

ServiceLocatorPatternDemo.java

public class ServiceLocatorPatternDemo {
   public static void main (String [] args) {
      Layanan = ServiceLocator.getService ( "Service1");
      service.execute ();
      Layanan = ServiceLocator.getService ( "Service2");
      service.execute ();
      Layanan = ServiceLocator.getService ( "Service1");
      service.execute ();
      Layanan = ServiceLocator.getService ( "Service2");
      service.execute ();		
   }
}

Langkah 7

Verifikasi output.

Mencari dan menciptakan objek Service1 baru
Pelaksana Service1
Mencari dan menciptakan objek Service2 baru
Pelaksana Service2
Kembali cache Service1 objek
Pelaksana Service1
Kembali cache Service2 objek
Pelaksana Service2