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