Java BeanUtils - DynaBeans ขี้เกียจ

คำอธิบาย

Lazy DynaBeans เป็นการใช้งาน DynaBean ซึ่งให้ลักษณะของ Lazy List และ Lazy Map ซึ่งเชื่อมต่อคุณสมบัติของ DynaClass Lazy DynaBeans มีสี่ประเภท:

  • LazyDynaBean: ระบุ DynaBean ที่ขี้เกียจที่ให้คุณสมบัติที่ปรับเปลี่ยนแบบไดนามิกของชื่อและชนิดข้อมูล

  • LazyDynaMap: ให้การใช้งาน DynaBean น้ำหนักเบาเพื่อทำแผนที่โดยใช้ lazy map หรือระบบรายการ

  • LazyDynaList: มีรายการสำหรับ DynaBean, Map หรือ POJOS (Plain Old Java Object ที่ระบุคลาส java ปกติ)

  • LazyDynaClass: ใช้อินเทอร์เฟซ MutableDynaClass

ต่อไปนี้เป็นคุณสมบัติของ Lazy DynaBeans:

  • Lazy property addition: มันถูกใช้โดย Lazy beans เพื่อเพิ่มคุณสมบัติให้กับ DynaClass โดยอัตโนมัติเมื่อมีการเรียกเมธอด set และมีความสามารถในการเพิ่มหรือลบคุณสมบัติของ DynaClass

  • Lazy List/Array growth: รายการ Lazy หรืออาร์เรย์จะเติบโตโดยอัตโนมัติเมื่อคุณสมบัติที่จัดทำดัชนีไม่สามารถรองรับดัชนีที่ตั้งไว้

  • Lazy List/Array instantiation: วิธี getter คุณสมบัติที่ทำดัชนีและวิธี setter ของผลลัพธ์ของ DynaBean ในรายการ lazy หรือการสร้างอินสแตนซ์อาร์เรย์หากไม่มีคุณสมบัติที่จัดทำดัชนี หากไม่ได้กำหนดคุณสมบัติที่ทำดัชนีไว้คุณสมบัตินั้นจะถูกเพิ่มโดยอัตโนมัติใน DynaClass และการสร้างอินสแตนซ์การใช้งานรายการเริ่มต้น

  • Lazy Map instantiation: คุณสมบัติ getter ที่แมปและเมธอด setter ของผลลัพธ์ของ DynaBean ในการสร้างอินสแตนซ์แผนที่แบบขี้เกียจหากไม่มีคุณสมบัติที่แมปอยู่ หากไม่ได้กำหนดคุณสมบัติที่แม็พไว้คุณสมบัตินั้นจะถูกเพิ่มโดยอัตโนมัติใน DynaClass และการสร้างอินสแตนซ์การใช้งานแผนที่เริ่มต้น

  • Lazy Bean instantiation: LazyDynaBean จะสร้างอินสแตนซ์ bean โดยใช้คอนสตรัคเตอร์ว่างเริ่มต้นหากคุณสมบัติDynaClassถูกกำหนดเป็น DynaBean หรือถั่วทั่วไปและไม่มีอยู่ใน DynaBean

LazyDynaBean

เป็นการนำถั่วขี้เกียจมาตรฐานมาใช้ซึ่งระบุ Lazy DynaBean ที่ให้คุณสมบัติที่ปรับเปลี่ยนแบบไดนามิกของชื่อและชนิดข้อมูล มันดำเนินMutableDynaClassอินเตอร์เฟซโดยการเชื่อมโยงกับLazyDynaClass โค้ดด้านล่างนี้แสดงการใช้ LazyDynaBean โดยใช้ getters หรือ setters:

DynaBean dynaBean = new LazyDynaBean();
 dynaBean.set("company", "Model");            // simple
 
 dynaBean.set("customer", "fname", "Steve");  // mapped
 dynaBean.set("customer", "lname", "Smith");  // mapped
 
 dynaBean.set("address", 0, addressLine1);    // indexed
 dynaBean.set("address", 1, addressLine2);    // indexed

LazyDynaMap

ช่วยให้การใช้งาน DynaBean มีน้ำหนักเบาเพื่อทำแผนที่โดยใช้ lazy map หรือระบบรายการและไม่เชื่อมโยงกับคุณสมบัติของ DynaClass ตัวมันเองใช้อินเทอร์เฟซ DynaClass และรับข้อมูลของ DynaClass จากเนื้อหาแผนที่ LazyDynaMap สร้างแผนที่ของตัวเองโดยการสร้างอินสแตนซ์หรือสามารถสร้างขึ้นรอบ ๆ แผนที่ที่มีอยู่

โค้ดด้านล่างแสดงการสร้างแผนที่ใหม่:

DynaBean dynaBean = new LazyDynaBean();
 DynaBean dynaBean = new LazyDynaMap();       // create DynaBean
 dynaBean.set("company", "Model");            // simple
 dynaBean.set("customer", "fname", "Steve");  // mapped
 dynaBean.set("address", 0, addressLine1);    // indexed
 Map demoMap = dynaBean.getMap()              // retrieve the Map

โค้ดด้านล่างแสดงการใช้แผนที่ที่มีอยู่ใน DynaBean:

Map demoMap = ....                               // exisitng Map
 DynaBean dynaBean = new LazyDynaMap(demoMap);    // wrap Map in DynaBean
 dynaBean.set("ford", "raptor");                  // set properties

LazyDynaList

มีรายการสำหรับ DynaBean, Map หรือ POJOS (Plain Old Java Object ที่ระบุคลาส java ปกติ) มีสองประเด็นหลักของคลาสนี้:

  • มันจะเติบโตและครอบครองรายการโดยอัตโนมัติด้วย DynaBean, java.util.Map หรือ POJOS เพื่อระบุพฤติกรรม Lazy List

  • มีวิธีง่ายๆในการใส่คอลเล็กชันหรืออาร์เรย์ลงในรายการ Lazy และวิธีง่ายๆในการออกจาก Lazy List

LazyDynaClass

มันดำเนินMutableDynaClassอินเตอร์เฟซและขยายBasicDynaClass สามารถใช้เป็น DynaClass เริ่มต้นโดย LazyDynaBean และการใช้งาน DynaBean อื่น ๆ ไม่มีอะไรเกี่ยวข้องกับ DynaClass เมื่อคุณใช้ LazyDynaBean

โค้ดด้านล่างสร้าง LazyDynaClass:

MutableDynaClass dynaClass = new LazyDynaClass();    // create DynaClass
 dynaClass.add("price", java.lang.Integer.class);     // add property
 dynaClass.add("orders", OrderBean[].class);          // add indexed property
 dynaClass.add("orders", java.util.TreeMapp.class);   // add mapped property
 DynaBean dynaBean = new LazyDynaBean(dynaClass);     // Create DynaBean with associated DynaClass

โค้ดด้านล่างสร้าง LazyDynaBean และรับ DynaClass:

DynaBean dynaBean = new LazyDynaBean();              	 // Create LazyDynaBean
 MutableDynaClass dynaClass =
           (MutableDynaClass)dynaBean.getDynaClass();    // get DynaClass

 dynaClass.add("price", java.lang.Integer.class);         // add property
 dynaClass.add("exBeans", myPackage.MyBean[].class);      // add 'array' indexed property
 dynaClass.add("exMap", java.util.TreeMapp.class);        // add mapped property