รูปแบบการบริการผู้แทนจำหน่าย
บริการสรูปแบบ (แบบบริการส) เพื่อใช้ในการวางตำแหน่งที่เราต้องการใช้บริการค้นหา JNDI เมื่อ โดยคำนึงถึงการค้นหา JNDI ราคาที่สูงสำหรับการบริการรูปแบบการบริการสใช้เต็มรูปแบบของเทคโนโลยีแคช ในคำขอครั้งแรกสำหรับการให้บริการให้บริการใน Locator บริการค้นหา JNDI และเก็บวัตถุบริการ เมื่อขอบริการเดียวกันอีกครั้ง Locator บริการที่มีลักษณะในแคชซึ่งสามารถปรับปรุงประสิทธิภาพของโปรแกรมในระดับมาก ต่อไปนี้เป็นนิติบุคคลของรูปแบบการออกแบบนี้
- บริการ (Service) - บริการจริงจัดการการร้องขออ้างอิงถึงบริการเหล่านี้สามารถพบได้ที่เซิร์ฟเวอร์ JNDI
- บริบท / บริบทเริ่มต้น - บริบท JNDI กับการบริการที่คุณต้องการที่จะหาข้อมูลอ้างอิง
- ระบุตำแหน่ง Service (บริการส) - บริการค้นหาผ่าน JNDI ค้นหาและแคชบริการที่จะได้รับเป็นจุดเดียวในการให้บริการติดต่อ
- แคช (Cache) - อ้างอิงถึงบริการจัดเก็บแคชเพื่อที่จะนำมาใช้ใหม่
- ไคลเอนต์ (Client) - ลูกค้าภาวนาวัตถุของการบริการผ่าน ServiceLocator
การสำนึก
เราจะสร้างServiceLocator,InitialContext แคช, บริการเป็นนิติบุคคลที่แสดงให้เห็นถึงวัตถุต่างๆService1และService2แทนนิติบุคคลบริการ
ServiceLocatorPatternDemo ชั้นสาธิตของเราที่นี่เป็นลูกค้าจะถูกนำมาใช้เพื่อแสดงให้เห็นถึงการให้บริการรูปแบบการออกแบบServiceLocator คัส
ขั้นตอนที่ 1
สร้างการให้บริการอินเตอร์เฟซให้บริการ
Service.java
บริการอินเตอร์เฟซที่สาธารณะ { ประชาชน String getName (); โมฆะสาธารณะรัน (); }
ขั้นตอนที่ 2
สร้างนิติบุคคลบริการ
Service1.java
เรียนสาธารณะ Service1 ดำเนินการให้บริการ { โมฆะสาธารณะรัน () { System.out.println ( "การดำเนินการ Service1"); } @Override ประชาชน String getName () { กลับ "Service1"; } }
Service2.java
เรียนสาธารณะ Service2 ดำเนินการให้บริการ { โมฆะสาธารณะรัน () { System.out.println ( "การดำเนินการ Service2"); } @Override ประชาชน String getName () { กลับ "Service2"; } }
ขั้นตอนที่ 3
สร้างแบบสอบถามสำหรับ JNDI InitialContext
InitialContext.java
เรียนสาธารณะ InitialContext { ค้นหาวัตถุสาธารณะ (String jndiName) { ถ้า (jndiName.equalsIgnoreCase ( "Service1")) { System.out.println ( "มองขึ้นไปและการสร้างวัตถุ Service1 ใหม่"); กลับ Service1 ใหม่ (); } else if (jndiName.equalsIgnoreCase ( "Service2")) { System.out.println ( "มองขึ้นไปและการสร้างวัตถุ Service2 ใหม่"); กลับ Service2 ใหม่ (); } กลับ NULL; } }
ขั้นตอนที่ 4
สร้างแคชแคช
Cache.java
นำเข้า java.util.ArrayList; นำเข้า java.util.List; แคชระดับสาธารณะ { รายการ <บริการ> บริการภาคเอกชน; แคชสาธารณะ () { บริการใหม่ = ArrayList <บริการ> (); } บริการสาธารณะ getService (String SERVICENAME) { สำหรับ (บริการบริการ: บริการ) { ถ้า (service.getName (). equalsIgnoreCase (SERVICENAME)) { System.out.println ( "ส่งคืนที่แคช" + SERVICENAME + "วัตถุ"); กลับมาให้บริการ; } } กลับ NULL; } โมฆะสาธารณะ addService (Service NEWSERVICE) { บูลีนที่มีอยู่ = false; สำหรับ (บริการบริการ: บริการ) { ถ้า (service.getName (). equalsIgnoreCase (newService.getName ())) { มีอยู่ = true; } } ถ้า (! มี) { services.add (NEWSERVICE); } } }
ขั้นตอนที่ 5
สร้าง Locator บริการ
ServiceLocator.java
ServiceLocator คลาสที่สาธารณะ { แคชแคชเอกชนคง; คง { แคชแคช = ใหม่ (); } บริการสาธารณะคง getService (String jndiName) { บริการบริการ = cache.getService (jndiName); ถ้า (บริการ! = null) { กลับมาให้บริการ; } InitialContext บริบท = InitialContext ใหม่ (); บริการ Service1 = (Service) context.lookup (jndiName); cache.addService (Service1); กลับ Service1; } }
ขั้นตอนที่ 6
ใช้ServiceLocatorแสดงให้เห็นถึงรูปแบบการออกแบบบริการระบุตำแหน่ง
ServiceLocatorPatternDemo.java
ServiceLocatorPatternDemo คลาสที่สาธารณะ { ประชาชนเป็นโมฆะคง main (String args []) { บริการบริการ = ServiceLocator.getService ( "Service1"); service.execute (); บริการ = ServiceLocator.getService ( "Service2"); service.execute (); บริการ = ServiceLocator.getService ( "Service1"); service.execute (); บริการ = ServiceLocator.getService ( "Service2"); service.execute (); } }
ขั้นตอนที่ 7
ตรวจสอบการส่งออก
มองขึ้นไปและการสร้างวัตถุ Service1 ใหม่ การดำเนินการ Service1 มองขึ้นไปและการสร้างวัตถุ Service2 ใหม่ การดำเนินการ Service2 กลับวัตถุ Service1 เก็บไว้ชั่วคราว การดำเนินการ Service1 กลับวัตถุ Service2 เก็บไว้ชั่วคราว การดำเนินการ Service2