Latest web development tutorials
×

设计模式 หลักสูตร

รูปแบบการออกแบบ รู้เบื้องต้นเกี่ยวกับรูปแบบการออกแบบ โหมดโรงงาน แบบโรงงานย่อ รูปแบบเดี่ยว รุ่นสร้าง รุ่นต้นแบบ อะแดปเตอร์รุ่น สะพานโหมด รูปแบบตัวกรอง โหมดการทำงานร่วมกัน มัณฑนากร รูปแบบซุ้ม ฟลายเวท โหมดพร็อกซี่ ห่วงโซ่ของรูปแบบความรับผิดชอบ โหมดคำสั่ง รูปแบบล่าม โหมดซ้ำแล้วซ้ำอีก รูปแบบที่เป็นสื่อกลาง รูปแบบของที่ระลึก รูปแบบการสังเกตการณ์ รูปแบบของรัฐ null Object Model โหมดกลยุทธ์ โหมดแม่แบบ รูปแบบของผู้เข้าชม MVC โหมด โหมดตัวแทน โหมดนิติบุคคลองค์ประกอบ รูปแบบการเข้าถึงข้อมูลของวัตถุ รูปแบบการควบคุมด้านหน้า intercepting รูปแบบตัวกรอง รูปแบบการบริการผู้แทนจำหน่าย วัตถุ Transfer รุ่น

设计模式其他

ทรัพยากรโหมดออกแบบ

รูปแบบการบริการผู้แทนจำหน่าย

บริการสรูปแบบ (แบบบริการส) เพื่อใช้ในการวางตำแหน่งที่เราต้องการใช้บริการค้นหา JNDI เมื่อ โดยคำนึงถึงการค้นหา JNDI ราคาที่สูงสำหรับการบริการรูปแบบการบริการสใช้เต็มรูปแบบของเทคโนโลยีแคช ในคำขอครั้งแรกสำหรับการให้บริการให้บริการใน Locator บริการค้นหา JNDI และเก็บวัตถุบริการ เมื่อขอบริการเดียวกันอีกครั้ง Locator บริการที่มีลักษณะในแคชซึ่งสามารถปรับปรุงประสิทธิภาพของโปรแกรมในระดับมาก ต่อไปนี้เป็นนิติบุคคลของรูปแบบการออกแบบนี้

  • บริการ (Service) - บริการจริงจัดการการร้องขออ้างอิงถึงบริการเหล่านี้สามารถพบได้ที่เซิร์ฟเวอร์ JNDI
  • บริบท / บริบทเริ่มต้น - บริบท JNDI กับการบริการที่คุณต้องการที่จะหาข้อมูลอ้างอิง
  • ระบุตำแหน่ง Service (บริการส) - บริการค้นหาผ่าน JNDI ค้นหาและแคชบริการที่จะได้รับเป็นจุดเดียวในการให้บริการติดต่อ
  • แคช (Cache) - อ้างอิงถึงบริการจัดเก็บแคชเพื่อที่จะนำมาใช้ใหม่
  • ไคลเอนต์ (Client) - ลูกค้าภาวนาวัตถุของการบริการผ่าน ServiceLocator

การสำนึก

เราจะสร้างServiceLocator,InitialContext แคช, บริการเป็นนิติบุคคลที่แสดงให้เห็นถึงวัตถุต่างๆService1และService2แทนนิติบุคคลบริการ

ServiceLocatorPatternDemo ชั้นสาธิตของเราที่นี่เป็นลูกค้าจะถูกนำมาใช้เพื่อแสดงให้เห็นถึงการให้บริการรูปแบบการออกแบบServiceLocator คัส

รูปแบบการบริการสแผนภาพ UML

ขั้นตอนที่ 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