ホームページ > Java > &#&チュートリアル > Java のシングルトンとしての列挙型: プライベート コンストラクターと静的メソッド - どちらのアプローチが適切ですか?

Java のシングルトンとしての列挙型: プライベート コンストラクターと静的メソッド - どちらのアプローチが適切ですか?

Susan Sarandon
リリース: 2024-11-03 18:26:29
オリジナル
595 人が閲覧しました

Enums as Singletons in Java: Private Constructor vs. Static Methods - Which Approach is Right for You?

Java で列挙型をシングルトンとして使用する: どのアプローチが最適ですか?

Java では、列挙型をシングルトンとして利用でき、作成およびアクセスするための簡潔で効率的なメカニズムを提供します。グローバルでユニークなインスタンス。ただし、列挙型を使用してこのデザイン パターンを実装するには、主に 2 つのアプローチがあります。INSTANCE フィールドでプライベート コンストラクターを利用する方法と、静的メソッドのみに依存する方法です。

プライベート コンストラクター アプローチ

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

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

このアプローチでは、列挙型はプライベート コンストラクターで宣言され、直接インスタンス化されなくなります。続いて、列挙型の唯一のインスタンスとして機能する単一の INSTANCE フィールドが作成されます。このインスタンスには、静的フィールド INSTANCE を通じてアクセスできます。

静的メソッドによるアプローチ

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

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

あるいは、静的メソッドによるアプローチでは、静的メソッドを利用して age プロパティを取得します。 INSTANCE フィールドの。この場合、列挙型はプライベート コンストラクターなしで宣言され、静的な getAge() メソッドを使用して INSTANCE フィールドの age プロパティにアクセスします (これも静的に宣言する必要があります)。

各アプローチの長所と短所

  • プライベート コンストラクター アプローチ:

    • 利点: インスタンスの作成と保守を厳密に制御します。シングルトン インスタンスとそのメソッドが明確に分離されています。
    • 欠点: インスタンスを引数として渡したり、プロパティにバインドしたりするのは簡単ではなく、テストがより困難になる可能性があります。
  • 静的メソッドのアプローチ:

    • 利点: インスタンスを簡単に引数として渡したり、プロパティにバインドしたりでき、テストがより簡単になります。
    • 欠点: 列挙型に同様の機能を持つ複数の静的メソッドがある場合、簡潔さが損なわれ、混乱を招く可能性があります。

最良のアプローチ

2 つのアプローチのどちらを選択するかは、アプリケーションの特定の要件によって異なります。インスタンスの作成とインスタンスとメソッドの分離を厳密に制御することが最も重要な場合は、プライベート コンストラクターのアプローチが推奨されます。ただし、インスタンスを渡したりバインドしたりする機能が不可欠な場合は、静的メソッドのアプローチがより現実的なオプションです。最終的には、個々のプロジェクトのトレードオフと要件に基づいて決定を下す必要があります。

以上がJava のシングルトンとしての列挙型: プライベート コンストラクターと静的メソッド - どちらのアプローチが適切ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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