LoginSignup
0
0

More than 1 year has passed since last update.

Effective Java 第3版まとめ(項目3)

Posted at

項目3.privateのコンストラクタかenum型でシングルトン特性を強制する

はじめに

  • シングルトンは一度しかインスタンスが作成されないクラス
  • シングルトンにすることでテストを困難にする

実装方法

その1

コンストラクタをprivateにし、インスタンスへのアクセスを提供するためのpublic static finalなメンバーを公開する

  • 長所
    • クラスがシングルトンであることがAPIから明らか
    • 単純である
  • 短所
    • リフレクションによりprivateコンストラクタを呼び出せてしまう
    • シリアライズ可能にするには、Serializableを実装するだけでなく、インスタンスフィールドをtransientと宣言し、readResolveメソッドを提供しなければならない

その2

コンストラクタをprivateにし、publicなstaticファクトリメソッドを公開する

  • 長所
    • APIを変更せずに振る舞いこを変えることができる
    • ジェネリックのシングルトンファクトリを書ける
    • サプライヤとしてメソッド参照を使える
  • 短所
    • リフレクションによりprivateコンストラクタを呼び出せてしまう
    • シリアライズ可能にするには、Serializableを実装するだけでなく、インスタンスフィールドをtransientと宣言し、readResolveメソッドを提供しなければならない

その3

単一要素を持つenumを宣言する

  • 長所
    • 何もしなくてもシリアライズやリフレクションへ対応できる
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0