首页 > 解决方案 > 带有 JAVA 服务加载器的单例设计模式

问题描述

我一直在寻找 关于网络服务加载器的问题的答案,并遇到了一个使用单例设计模式的解决方案。

我根据该模式实现了我的程序,它给了我预期的输出。

但是对于单例设计模式,我还有一些需要澄清的地方。

为什么我们private static在设计模式时使用变量和静态方法?

这是我根据模式设计的类。

public class SingletonDesignPattern {

      private static SingletonDesignPattern singletonDesignPattern;
      private ServiceLoader<Cipher> serviceLoader;

      private SingletonDesignPattern() {

        serviceLoader = ServiceLoader.load(Cipher.class);

      }

      public static SingletonDesignPattern getInstance() {

        if (singletonDesignPattern == null)
          singletonDesignPattern = new SingletonDesignPattern();

        return singletonDesignPattern;

      }
}

我发现我们使用static方法是因为我们不会在任何其他类中创建此类的实例。

除了我上面提到的之外,任何说明使用static private变量和static方法的目的的解释都值得赞赏。

标签: javasingletonserviceloader

解决方案


单例模式的目的是只创建该类的一个实例并在任何地方使用它。它是私有的,因为我们不希望它被多次创建。它是静态的,因为我们想在任何地方使用相同的创建实例。


推荐阅读