รีจิสทรี

จากข้อมูลเบื้องต้น ต่อไปนี้เป็นคำนิยามอย่างไม่เป็นทางการของ Registry

แต่

อย่างไรก็ตาม การทำความเข้าใจชั้นเรียนนี้เพื่อทำงานร่วมกับ Tink ให้มีประสิทธิภาพในตอนนี้อาจเป็นประโยชน์

จะเกิดอะไรขึ้นเมื่อเรียกใช้ getPrimitive() บนแฮนเดิลชุดคีย์ โดยจะส่งต่อการเรียกของคุณไปยัง Registry1 ซึ่งมีออบเจ็กต์ที่มีเมธอดที่เป็นรูปธรรมในการสร้างคีย์และพื้นฐาน เช่น คีย์ AesGcm หรืออินสแตนซ์ ChunkedMac งานของรีจิสทรีคือการส่งต่อการเรียกไปยังออบเจ็กต์ที่ถูกต้อง วิธีนี้จะใช้งานได้เมื่อออบเจ็กต์ได้รับการลงทะเบียนเท่านั้น ซึ่งเป็นเหตุผลที่ การบันทึกค่าพื้นฐานที่คุณจะใช้เสมอ

แต่จะเกิดอะไรขึ้นหากฉันใช้ไลบรารีที่ลงทะเบียนแบบพื้นฐานแล้วที่ฉันจำเป็นต้องใช้

นั่นคือปัญหาจริงๆ ซึ่งเป็นเหตุผลหนึ่งที่ทำให้รีจิสทรีถูกนำออก เพราะในกรณีนี้โค้ดจะทำงานได้จนกว่าผู้เขียนห้องสมุดจะตัดสินใจที่จะไม่บันทึกโค้ดพื้นฐานนั้นอีกต่อไป ที่ตอนนี้โค้ดของคุณขัดข้อง และ สาเหตุก็ไม่ชัดเจนและทำให้เกิดความสับสน ดังนั้น ให้บันทึกสิ่งที่คุณใช้เสมอ ตัวอย่างเช่น หากคุณต้องการใช้ MAC ในโค้ด Java คุณควรทำดังต่อไปนี้ในขั้นตอนการตั้งค่า

MacConfig.register()

โค้ดนี้ช่วยให้มั่นใจว่าออบเจ็กต์ที่จำเป็นทั้งหมดมีการลงทะเบียนในตำแหน่งที่จำเป็นเพื่อให้คุณใช้ข้อมูลพื้นฐานของ MAC

ปัญหานี้มีอีก 1 ด้าน ทรัพยากร Dependency บางรายการอาจบันทึกสิ่งที่คุณไม่ต้องการจริงๆ และไม่ต้องการ นี่เป็นอีกเหตุผลหนึ่งในการนำรีจิสทรีส่วนกลางออก


  1. กับอินสแตนซ์ Singleton ส่วนกลางของ class Registry เพื่อให้คุณเข้าใจได้ชัดเจน เราใช้ชื่อ "Registry" ทั้งสำหรับคลาสและซิงเกิลแทน