Java KeyGenerator是否使用Singleton Pattern?

时间:2017-09-08 21:27:09

标签: java design-patterns

这是source code

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

我应该误会一些事情。

1 个答案:

答案 0 :(得分:2)

消息来源与您的观察结果并不矛盾:

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);
}

可能是单身人士的是SpiAndProvider返回的ENGINE#getInstance。如果您进一步了解实现情况,每次调用getInstance时都会有一个新实例并不奇怪,因为KeyGenerator有实例成员,使用您通过调用传递的参数启动。< / p>