1. ホーム

[解決済み】Javaでシングルトンパターンを実装するための効率的な方法は何ですか?[クローズド]

2022-03-23 07:28:26

質問

Javaでシングルトンデザインパターンを実装する効率的な方法は何ですか?

どのように解決するのですか?

enumを使用する。

public enum Foo {
    INSTANCE;
}

Joshua Blochは、このアプローチについて、彼の エフェクティブ・ジャバ・リローデッド Google I/O 2008での講演。 ビデオへのリンク . また、彼のプレゼンテーションのスライド30-32を参照してください( 効果的なJavaの再読み込み.pdf ):

シリアライザブルシングルトンの正しい実装方法

public enum Elvis {
    INSTANCE;
    private final String[] favoriteSongs =
        { "Hound Dog", "Heartbreak Hotel" };
    public void printFavorites() {
        System.out.println(Arrays.toString(favoriteSongs));
    }
}

編集する An Effective Java"のオンライン版です。 は言う。

<ブロッククオート

このアプローチは、より簡潔で、シリアライゼーション機構を無料で提供し、高度なシリアライゼーション攻撃やリフレクション攻撃に直面しても、多重インスタンス化に対する鉄壁の保証を提供することを除いて、機能的にはパブリックフィールドのアプローチと同等である。この方法はまだ広く採用されてはいませんが。 単一要素のenum型は、シングルトンを実装するための最良の方法です。 ."