रजिस्ट्री

बुनियादी बातों से शुरू करते हुए, यहां रजिस्ट्री की एक अनौपचारिक परिभाषा दी गई है:

लेकिन:

यह कहने के लिए, इस क्लास को समझने से काम हो सकता है. ताकि आप कुछ समय के लिए Tink को बेहतर तरीके से इस्तेमाल कर सकें.

किसी कीसेट हैंडल पर getPrimitive() को कॉल करने से क्या होता है? यह रजिस्ट्री1 को कॉल करें, जिसमें ऐसे ऑब्जेक्ट होते हैं जिनमें कॉन्टेंट बनाने के लिए ठोस तरीके मौजूद होते हैं कुंजी और प्रीमिटिव, जैसे कि AesGcm कुंजी या ChinkedMac इंस्टेंस. रजिस्ट्री का काम कॉल को दूसरे नंबर पर भेजना है सही ऑब्जेक्ट के साथ रखें. यह सिर्फ़ तब काम करता है, जब ऑब्जेक्ट रजिस्टर हो. इसी वजह से जिन प्रिमिटिव का आप इस्तेमाल करने जा रहे हैं उन्हें हमेशा रजिस्टर करना ज़रूरी है.

लेकिन अगर मैं किसी ऐसी लाइब्रेरी का इस्तेमाल करूं जिसमें मेरी ज़रूरत के प्रिमिटिव पहले से रजिस्टर हों, तो क्या होगा?

यही समस्या है. रजिस्ट्री को हटाए जाने की एक वजह भी है. क्योंकि इस मामले में आपका कोड केवल तब तक काम करता है जब तक कि लाइब्रेरी के लेखक अब उस प्रिमिटिव को रजिस्टर न करें. इस स् थान पर आपका कोड ब्रेक होता है और वजह साफ़ नहीं है और समझने में मुश्किल होती है. तो आप जो भी रजिस्टर करें इस्तेमाल करना होगा. उदाहरण के लिए, अगर आपको अपने Java कोड में MAC का इस्तेमाल करना है, तो सेटअप के दौरान ये चरण दिखेंगे:

MacConfig.register()

यह कोड पक्का करता है कि सभी ज़रूरी ऑब्जेक्ट आपके लिए MAC प्रिमिटिव का इस्तेमाल करना ज़रूरी है.

इस समस्या का एक और पक्ष है. आपकी कुछ डिपेंडेंसी रजिस्टर हो सकती हैं जिसकी आपको कोई ज़रूरत नहीं है और जिस पर आप निर्भर नहीं रहना चाहते हैं. यह है ग्लोबल रजिस्ट्री को हटाने की कोई अन्य वजह हो सकती है.


  1. ग्लोबल सिंगलटन इंस्टेंस में बदलना है. हम "Registry" नाम का इस्तेमाल करते हैं वह क्लास और सिंगलटन, दोनों के लिए एक-दूसरे की जगह इस्तेमाल किया जा सकता है.