1. ホーム
  2. java

[解決済み] Java: getInstanceとStaticの比較

2022-02-25 23:45:49

質問

の目的は何ですか? getInstance() をJavaで作成することはできますか?

私の研究中、私は次のことを読み続けています。 getInstance() は、Singletonデザインパターン(私の理解では、プログラム全体にわたってただ1つのインスタンスを意味します)を達成するのに役立ちます。でも、staticを使うのはダメなんでしょうか?静的の要点はそこではないのでしょうか?

静的なメソッドとフィールドを持つだけであれば、「静的なメソッドとフィールドを持つ」こととどう違うのでしょうか? getInstance() ? staticにはスコープがありますか?例えば、1つのメソッドまたはクラスにつき1つのインスタンスですか?

また、両者が異なる場合、どのようなケースで選択するかというと getInstance() を静的に使用した場合、どのようになるのでしょうか?

質問が不明瞭であれば申し訳ありません、私は主題について何か見逃しているのは確かです。

いろいろなアドバイス、ありがとうございました。

解決方法は?

Staticではシングルトンは得られません。 Javaではトップレベルのクラスをシングルトンにする方法はないので、クラスのインスタンスが1つだけであることを確認するためのロジックを実装するgetInstanceメソッドがあります。

public class Singleton {

   private static Singleton singleton;

   private Singleton(){ }

   public static synchronized Singleton getInstance( ) {
      if (singleton == null)
          singleton=new Singleton();
      return singleton;
   }

}

このトップアンサーをチェックしてください。 Javaにおける静的クラス

しかし、Java 1.6では、このようにシングルトンを作成する方が、よりエレガントであると私は思います。

public enum MyEnumSingleton {
    INSTANCE;

    // other useful methods here
} 

出典 http://www.vogella.com/tutorials/DesignPatternSingleton/article.html