【问题标题】:Is Java KeyGenerator using Singleton Pattern? [closed]Java KeyGenerator 是否使用单例模式? [关闭]
【发布时间】:2017-09-09 05:42:56
【问题描述】:

这是source code

但似乎每次用户调用getInstance() 时都会创建一个新的instance

我应该误会了什么。

【问题讨论】:

标签: java design-patterns


【解决方案1】:

来源与您的观察并不矛盾:

public static final KeyGenerator getInstance(String algorithm)
        throws NoSuchAlgorithmException {
    if (algorithm == null) {
        throw new NullPointerException("algorithm == null");
    }
    Engine.SpiAndProvider sap = ENGINE.getInstance(algorithm, null);
    return new KeyGenerator((KeyGeneratorSpi) sap.spi, sap.provider, algorithm);
}

ENGINE#getInstance 返回的 SpiAndProvider 可能是单例。如果您进一步研究实现,那么每次调用 getInstance 时都会有一个新实例,这并不奇怪,因为 KeyGenerator 具有实例成员,由您通过调用传递的参数启动。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多