「Java言語で学ぶデザインパターン入門」(1)

第5章 Singleton たった1つのインスタンス

  • コンストラクタをprivateにするってのはおもしろい
  • 1つのインスタンスはstaticでprivateなメンバ変数に対してnewされている
  • newされているが無限ループにならないのは、staticなメンバ変数で1度しかnewされないから。
  • このインスタンスはgetInstanceというインスタンスの参照を得るためのメンバ関数を呼ぶときに生成されるらしいが、このタイミングなのはなぜか? Java言語の仕様らしいがその設計思想は?
  • 問題5.3の書き方はマルチスレッドを考えるとだめなんだね… おみそれしました。

第6章 Prototype コピーしてインスタンスを作る

  • インスタンスから別のインスタンスを作る理由は分かるようで分からない
  • Prototype役がJavaのinterfaceで実現されているのが不思議。抽象クラスの方がそれっぽい。 ⇒ 抽象クラスを使う場合や、Javaのinterfaceとの間に親クラスをはさむ場合もある(Template Methodパターン)
  • メッセージでインスタンスを生成がすばらしい。これはクラス名の束縛からFWを分離しているらしい。ソースの中に利用するクラス名が書かれていると、そのクラスと切り離して再利用ができなくなる。
  • マーカインターフェースというものがある

第7章 Builder 複雑なインスタンスを組み立てる

  • クライアント役は監査役がやっていることを知らない、監査役は建築役がやっていることを知らない。知らないからこそ入れ替えができる。
  • 文字列の修正や追加が頻繁に発生する場合は、StringクラスよりもStringBufferの方が効率が良い。⇒(理由) ①Stringだと追加や修正の度に新しいStringのインスタンスが生成される。 ②StringBufferだとコンストラクタでバッファの最大長を指定できる。