8

クラスのオブジェクトを1つだけ作成し、同じオブジェクトを何度も再利用したいと思います。これを行うための効率的な方法はありますか?

これどうやってするの?

4

8 に答える 8

11
public final class MySingleton {
    private static volatile MySingleton instance;

    private MySingleton() {
        // TODO: Initialize
        // ...
    }

    /**
      * Get the only instance of this class.
      *
      * @return the single instance.
      */
    public static MySingleton getInstance() {
        if (instance == null) {
            synchronized (MySingleton.class) {
                if (instance == null) {
                    instance = new MySingleton();
                }
            }
        }
        return instance;
    }
}
于 2013-01-03T08:45:34.770 に答える
2

これは通常、Singleton パターンで実装されますが、実際に必要になる状況は非常にまれであり、これは無害な決定ではありません。

決定を下す前に、代替ソリューションを検討する必要があります。

静的変数が悪になり得る理由に関するこの他の投稿も興味深い読み物です (シングルトンは静的変数です)。

于 2013-01-03T08:43:25.863 に答える
1

1 つのインスタンスを持つクラスを作成する最も簡単な方法は、enum

public enum Singleton {
    INSTANCE
}

これをSteve Taylorの回答と比較して、代替案よりもどれほど単純かを確認できます.

ところで:ステートレスシングルトンを使用することをお勧めします。ステートフルなシングルトンが必要な場合は、依存性注入を使用することをお勧めします。

于 2013-01-03T10:30:52.060 に答える
0

それがシングルトン パターンです。基本的には、プライベート コンストラクターでの構築を防ぎ、単一のインスタンスを作成する静的同期ゲッターでインスタンスを「取得」します (まだ存在しない場合)。

乾杯、

于 2013-01-03T08:43:25.670 に答える
0

シングルトンと呼ばれるデザインパターンがあります。それを実行すれば、必要なものが得られます。

これを見て、それを実装するさまざまな方法を確認してください。

于 2013-01-03T08:43:36.500 に答える
0

はい。それはシングルトンクラスと呼ばれます。唯一無二のインスタンスを作成し、それをコード全体で使用します。

于 2013-01-03T08:43:48.370 に答える
0

Singleton patternを探しています。ウィキペディアの記事を読むと、Java で実装する方法の例が見つかります。

デザイン パターンについても詳しく知りたいと思われる方は、「Head First Design Patterns」という本、またはErich Gamma 氏らによるオリジナルのデザイン パターンの本を読むことをお勧めします (前者には Java の例が記載されていますが、後者には含まれていません)。 t)

于 2013-01-03T08:43:48.247 に答える
0

あなたが探しているのはSingleton Patternです。

于 2013-01-03T08:44:21.450 に答える