私はEffectiveJavaを読みましたが、シングルトンはを使用して実装するのが最適であると述べられていenum
ます。
このアプローチは、より簡潔で、無料のシリアル化機構を提供し、高度なシリアル化またはリフレクション攻撃に直面した場合でも、複数のインスタンス化に対する強力な保証を提供することを除いて、パブリックフィールドアプローチと機能的に同等です。このアプローチはまだ広く採用されていませんが、シングルエレメント列挙型はシングルトンを実装するための最良の方法です。
それでも、これはオンザフライのシリアル化と真のシングルインスタンスを実現するためのトレードオフのように見えますが、従来のシングルトンのよりフレンドリーなOOPアプローチを失います。列挙型は継承できず、インターフェイスのみを実装できます。スケルトンクラスを提供する場合は、ヘルパークラスを作成する必要があります。
では、上記の理由以外に、なぜ列挙型をシングルトンの最良の実装として受け入れる必要があるのでしょうか。