Observer: 登場人物 (Subject・Observable, Observer・Subscriber, ConcreteSubject, ConcreteObserver)
定義
**Observer: 登場人物 (Subject・Observable, Observer・Subscriber, ConcreteSubject, ConcreteObserver)**とは、Subject・Observable, Observer・Subscriber, ConcreteSubject, ConcreteObserverという概念・技法である。適用の目的は、表題が扱う判断を一つの境界へ集め、利用側が内部の都合ではなく明示された契約へ依存できるようにすることにある。
仕組みと具体例
Subject・Observable, Observer・Subscriber, ConcreteSubject, ConcreteObserver。呼び出し側は具象実装ではなく役割を表すインターフェースへ依存し、差し替え前後で同じ事前条件・事後条件を維持する。
実装前には、正常入力だけでなく、空値、境界値、重複要求、途中失敗を含む例を表にする。たとえば注文処理なら「未確定から確定へは遷移できるが、取消済みから確定へは戻せない」のように許可する状態遷移を具体化する。Observer: 登場人物 (Subject・Observable, Observer・Subscriber, ConcreteSubject, ConcreteObserver)を担当する処理がこの規則を一か所で検査すれば、別の入口から不正な更新が混入するのを防げる。
適用時の確認
採用前に、解決する変更理由が実在するか、導入により依存先が減るか、単体テストで契約を検証できるかを確認する。採用後は、利用側が具象型や保存形式を知っていないこと、例外やエラー値が呼び出し側の回復判断に必要な情報を持つことをレビューする。
限界とトレードオフ
Observer: 登場人物 (Subject・Observable, Observer・Subscriber, ConcreteSubject, ConcreteObserver)は、境界を追加すれば自動的に品質が上がるという規則ではない。抽象化、変換、状態管理にはコード量と運用コストが伴う。実装が一種類で変化の見込みがなく、直接表現の方が契約を明確にできる場合は導入を遅らせる方がよい。また性能や一貫性の要求が優先される場合は、単純さとの交換条件を計測結果とともに記録する。