Registry

<ph type="x-smartling-placeholder">

从基础知识开始,以下是 Registry 的非正式定义:

但是:

话虽如此,但理解此类可能有助于您 Tink 的成功之道。

当您对密钥集句柄调用 getPrimitive() 时,会发生什么情况?它会将您的 对 Registry1 的调用,其中包含具有具体创建方法的对象 键和基元,例如 AesGcm 键或 ChunkedMac 实例。Registry 的任务是转发调用 正确的对象。这只有在对象注册的情况下才有效,这就是为什么 务必要始终注册要使用的基元

但是,如果我使用的库已经注册了我所需的基元,该怎么办?

这就是问题所在。这也是我们移除 Registry 的一个原因。 因为在这种情况下,您的代码只在库作者决定 不再注册该基元。此时,您的代码就会被破坏, 原因不明显且令人困惑。因此,请始终注册您 使用。例如,如果您打算在 Java 代码中使用 MAC,则应进行 在设置阶段进行以下设置:

MacConfig.register()

此代码可确保在 才能使用 MAC 基元。

此问题还有一个方面。您的部分依赖项可能会注册 您实际并不需要并且不想依赖的东西。这是 删除全局注册表的另一个原因。


  1. 传递到类 Registry 的全局单例实例。我们使用“注册表”这一名称类和单例,可互换。