Observer パターン
以下のコードは Python 3.x で Observer パターンを記述したものである。引数を1つ受け取るupdate()メソッドを持つオブジェクトであれば、リスナーとして何でも受け付ける(ダック・タイピング)。なお、例ではリスナーの集合を保持するためにリストを使用しているため、同じオブジェクトの多重登録を許可する実装となっている。
出力:
sigslot - C++ Signal/Slot ライブラリ
XLObject - テンプレートベースの C++ signal/slot モデル
GLib - C言語でのオブジェクトと signals/callbacks の実装(他のプログラミング言語用の実装もある)
Exploring the Observer Design Pattern | Microsoft Docs - C#とVisual Basic .NETによる実装例。デリゲートとevent構文を利用。
Using the Observer Pattern - REALbasic による実装
flash.events - ActionScript 3.0 でのパッケージ(ActionScript 2.0 の mx.events パッケージの後継)
YUI Event utility - カスタムイベントを Observer パターンで実装
Py-notify - Python 実装
このパターンに登場する各インタフェースとインタフェースの実装クラスを、以下で解説する。