Observerパターン

観察者(Observer)と言いつつ、実は通知を待っている感じだったりするパターン。Mediatorパターンと似てるだろ!とか思いながらちょっとせっかちになっていきなりサンプルを見てしまった。んー頭を使うことをけちってはいかんなぁ。反省。
ポイントはMediatorパターンと似ているけどニュアンスが違うということ。Mediatorパターンはあくまでいろんなヤツらの調停役であってその役の一環として通知を受けたりするのに対して、Observerパターンは通知を受けることでカチッと同期を取ることに主眼が置かれている。その例としてサンプルではGUIにおけるボタンを押した際の処理が扱われている。
メモはJDKにはjava.util.Observerインタフェース&java.util.Observableクラスってのもあるけど、なんせ通知受ける側がクラスなんで使いづらいですよという話。あとこれはこの本から一貫して学ぶべきこととして、重要なポイントが書かれているので忘れないようにまんま引用メモ。

  • 抽象クラスやインタフェースを使って、具象クラスから抽象メソッドをひきはがしておく
  • 引数でインスタンスを渡すときや、フィールドでインスタンスを保持するときには、具象クラスの型にしないで、抽象クラスやインタフェースの型にしておく

これによって交換可能性が実現されるということですな。