Dimulai dari dasar-dasarnya, berikut ini adalah definisi informal dari Registry:
Namun:
Oleh karena itu, sebaiknya pahami kelas ini agar dengan Tink secara efisien untuk saat ini.
Apa yang terjadi saat Anda memanggil getPrimitive()
pada tuas keyset? Ini akan meneruskan
panggilan ke Registry1, yang berisi objek dengan metode konkret untuk membuat
kunci dan primitif, seperti
tombol AesGcm atau instance ChunkedMac. Tugas Registry adalah meneruskan panggilan
ke objek yang benar. Ini hanya berfungsi jika objek telah terdaftar. Itulah sebabnya
penting untuk selalu mendaftarkan primitif yang akan digunakan.
Namun, bagaimana jika saya menggunakan library yang sudah mendaftarkan primitif yang saya perlukan?
Itulah masalahnya. Dan salah satu alasan penghapusan Registry. Karena dalam hal ini, kode Anda hanya berfungsi hingga penulis pustaka memutuskan untuk tidak mendaftarkan primitif itu lagi. Pada tahap ini, kode Anda akan rusak, dan tidak jelas dan membingungkan. Jadi, selalu daftarkan apa yang Anda digunakan. Sebagai contoh, jika Anda ingin menggunakan MAC di kode Java Anda, Anda harus melakukan hal berikut dalam tahap penyiapan:
MacConfig.register()
Kode ini memastikan bahwa semua objek yang diperlukan telah terdaftar di tempat yang diperlukan untuk menggunakan primitif MAC.
Ada satu hal lagi dari masalah ini. Beberapa dependensi Anda mungkin mendaftarkan hal-hal yang sebenarnya tidak Anda perlukan dan tidak ingin Anda andalkan. Ini adalah alasan lain untuk menghapus {i>Registry<i} global.
-
ke instance singleton global Registry class, tepatnya. Kami menggunakan nama "Registry" untuk keduanya, class dan singleton, secara bergantian. ↩