
2.3
オブザーバパターン
39
してください。
グローバルオブジェクトや他のモジュールに変更を加えることは、そのモジュールの担当範囲を超え
た振る舞いであるため、場合によってはアプリケーションを壊すことになりかねません。たとえば、そ
のようなモジュールが複数存在して、それぞれがグローバルオブジェクト内の同じプロパティを操作
した場合、もしくはキャッシュ内の同じモジュールに変更を加えた場合、どのような結果になるか想像
してみてください。そのようなモジュールはアプリケーション全体に影響を与えるため、細心の注意を
払って使用しなければいけません。
2.3
オブザーバパターン
Node
の基本パターンの最後を飾るのがこのオブザーバ(
observer
)パターンです。今まで紹介した
リアクタパターン、コールバック、そしてモジュールと並んで、オブザーバパターンは
Node
の中心的
な役割を果たすもので、コアモジュールからユーザーラ
ンドのモジュールまで、広範囲にわたって使わ
れています。
オブザーバパターンは
Node
の非同期処理をうまく扱うための機構であり、コールバックを補完する
ものです。オブザーバパターンを厳密に定義すると次のようになります。
オブザーバパターン
サブジェクト(
subject
)と呼ばれるオブジェクトと、サブジェクトの状態が変化したとき
に通知を受け取る「オブザーバ」もしくは「リスナー」と呼ばれる複数のオブジェクトから
なる。
コールバックパターンとの最大の違いは、サブジェクトが(一般には)複数のオブザーバ
に対して通知す ...