Registry

Dimulai dari dasar-dasarnya, berikut adalah definisi informal Registry:

Namun:

Meskipun demikian, mungkin ada baiknya untuk memahami class ini agar dapat bekerja dengan Tink secara efisien untuk saat ini.

Apa yang terjadi jika Anda memanggil getPrimitive() pada handle keyset? Metode ini meneruskan panggilan Anda ke Registry1, yang berisi objek dengan metode konkret untuk membuat kunci dan primitif, seperti kunci AesGcm atau instance ChunkedMac. Tugas Registry adalah meneruskan panggilan ke objek yang benar. Ini hanya berfungsi jika objek terdaftar. Itulah sebabnya penting untuk selalu mendaftarkan primitif yang akan Anda gunakan.

Namun, bagaimana jika saya menggunakan library yang sudah mendaftarkan primitif yang saya butuhkan?

Itulah masalahnya. Dan salah satu alasan Registry dihapus. Karena dalam hal ini, kode Anda hanya berfungsi sampai penulis library memutuskan untuk tidak mendaftarkan primitif tersebut lagi. Pada tahap ini, kode Anda akan rusak, dan alasannya tidak jelas dan membingungkan. Jadi, selalu daftarkan apa yang Anda gunakan. Misalnya, jika ingin menggunakan MAC dalam kode Java, Anda harus melakukan hal berikut dalam fase penyiapan:

MacConfig.register()

Kode ini memastikan bahwa semua objek yang diperlukan terdaftar di tempat yang diperlukan agar Anda dapat menggunakan sistem dasar MAC.

Ada satu sisi lagi dari masalah ini. Beberapa dependensi Anda dapat mendaftarkan hal-hal yang sebenarnya tidak Anda butuhkan dan lebih suka untuk tidak digunakan. Ini adalah alasan lain untuk menghapus Registry global.


  1. ke instance singleton global Registry class, agar lebih tepat. Kami menggunakan nama "Registry" untuk kedua class dan singleton, secara bergantian.