Enum を使用したシングルトンの実装 (Java で)
ソフトウェア開発の領域では、必要なシナリオに遭遇することは珍しくありません。クラスのメモリ内にインスタンスが 1 つだけ存在するようにします。設計パターンであるシングルトンは、この要件に応えます。
列挙型を使用した次のシングルトンの Java 実装を考えてみましょう。
public enum MySingleton { INSTANCE; }
表面的には、これが実際にどのように機能するのか疑問に思うかもしれません。結局のところ、オブジェクトが存在するにはインスタンス化する必要があります。内訳は次のとおりです:
暗黙的コンストラクター:
実際には、enum 宣言は暗黙的に空のコンストラクターを呼び出します。ただし、これはコードだけからは必ずしも明らかではありません。
明示的なコンストラクター:
より明示的にするために、列挙型にプライベート コンストラクターを追加できます:
public enum MySingleton { INSTANCE; private MySingleton() { System.out.println("Here"); } }
Enum 定数と構築:
Enum フィールドは本質的にコンパイル時の定数ですが、列挙型のインスタンスでもあります。 enum 型が初めて参照されるときに、これらのインスタンスが構築されます。
メイン メソッドのデモ:
別のクラスにメイン メソッドを作成する場合:
public static void main(String[] args) { System.out.println(MySingleton.INSTANCE); }
次の出力を確認できます:
Here INSTANCE
この例では、インスタンス「INSTANCE」は、列挙型が main メソッドで初めて参照されるときに構築されます。
以上がJava Enum はシングルトン設計パターンをどのように実装するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。