シングルトンのインスタンスと静的メソッド: Java での Enum ベースの実装にはどちらが理想的ですか?

Mary-Kate Olsen
リリース: 2024-11-04 05:48:29
オリジナル
603 人が閲覧しました

  Instance vs Static Method for Singletons: Which is Ideal for Enum-Based Implementation in Java?

Java で Enum を使用したシングルトンの作成: 相違点と考慮事項

オブジェクト指向プログラミングでは、シングルトンは 1 つのみの存在を保証するクラスです。実例。 Java では、列挙型を使用してシングルトンを作成できます。これを実現するにはさまざまなアプローチがありますが、次の 2 つの注目すべきバリエーションがあります。

オプション 1: インスタンス メソッド

<code class="java">public enum Elvis {
    INSTANCE;
    private int age;

    public int getAge() {
        return age;
    }
}</code>
ログイン後にコピー

このアプローチでは、プライベート インスタンス変数 (age) が作成されます。そしてそれにアクセスするためのゲッター メソッド (getAge) を公開します。シングルトン アクセスは Elvis.INSTANCE を通じて実現されます。

オプション 2: 静的メソッド

<code class="java">public enum Elvis {
    INSTANCE;
    private int age;

    public static int getAge() {
        return INSTANCE.age;
    }
}</code>
ログイン後にコピー

このバリエーションでは、age 変数は enum 内でプライベートのままですが、静的メソッド (getAge) を通じてアクセスします。シングルトンへのアクセスは、Elvis.getAge() を介して行われます。

相違点と考慮事項

  • インスタンス メソッド:

    • インスタンス固有の getAge メソッド (getAge) を作成します。
    • インスタンス固有のプロパティを変更またはアクセスする必要がある場合に役立ちます。
  • 静的メソッド:

    • インスタンスを必要とせずに age 変数への直接アクセスを提供します。
    • 変更せずに変数の値のみを取得できます。
  • バインディングに関する考慮事項:

    • オプション 1 では、インスタンス (Elvis.INSTANCE) を必要とするプロパティに簡単にバインドできますが、オプション 1 ではインスタンス (Elvis.INSTANCE) を必要とするプロパティに簡単にバインドできます。 2 では、クラス自体 (Elvis.class) へのバインディングが必要になる場合があります。
  • 最適性:

    • 静的メソッドのアプローチは次のとおりです。静的メンバーにアクセスするためだけにインスタンスを作成する必要がなくなるため、より最適です。

以上がシングルトンのインスタンスと静的メソッド: Java での Enum ベースの実装にはどちらが理想的ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート