今日のデザインパターン

オブジェクト指向における再利用のためのデザインパターン
Mementoパターンのサンプルコードを見て、Commandパターンとの組み合わせについて理解できました。なるほど、Command::Execute()の時にCreateMemento()で、UnExecute()の時にSetMemento()と。

Observerパターン

観察対象に観察者を登録して、対象に変化が発生した時に観察者にそれを知らせる、というパターンです。
インスタンスが別のインスタンスを参照している場合、参照先のインスタンスが消えてもまだずっとそれを保持していてはバグの元なので、消える瞬間に参照元インスタンスにそれを知らせる、とかいう使い方ができますよね。これまたObserverを実装するべきところって泥臭い処理が必要になるところなわけで、うにゃうにゃ。

Mediatorパターン

複数のクラス間のそれなりに複雑な依存関係を文字通り「調停」するクラスを作って、面倒なことは全部ここに任せてしまいましょうというパターンです。
これまたとあるUIユーティリティクラスで使ってました。本のサンプルそのまんまな感じの、Widget間で情報の同期を取るような、そういう目的で作った物です。