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 サイトの他の関連記事を参照してください。