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