Observer パターン
Observerの実装クラス。
Subjectの実装クラス。通知対象であるObserver群を持つ。各Observerが受け取る通知に関する処理を司る。notifyObservers() を呼ぶと、Observer群の1つ以上にイベントを通知する。
ロックを避けるため、CopyOnWriteArraySetを使用する例を示す。スレッドセーフにする必要がない、あるいはsynchronizedで同期するのであれば、HashSetやTreeSetを使ってもかまわないが、コンテナの実装によっては順序が保証されず、リスナーを追加したときの順番でupdate()が呼ばれるとは限らない。
出力結果はPythonの例と同じである。