まず、オブザーバーパターン設計クラス図を見て:
定義:
オブザーバーパターンがあるデザインパターン 1。このモードでは、ターゲットオブジェクトは、そのオブザーバすべてのオブジェクトを管理するために、依存関係、および状態そのものが変わる事前通知。これは通常、各視聴者に提供メソッド呼び出しによって達成されます。このモデルは、多くの場合、リアルタイムイベント処理システムで使用されています。
特長:
オブジェクトの変更は、対応する他のオブジェクトが反応するときに、オブジェクトとオブジェクト間の依存関係を確立することは、自動的に他のオブジェクトに通知します。ここで、変更されたオブジェクトは、観察対象と呼ばれ、オブジェクトは、視聴者が通知されると、観察対象は、複数の観察者に対応することができると呼ばれ、それらと視聴者との間の接続がない、必要と削除ビューアとして増加することができます拡張しやすいシステムを作ります。観察対象と観察者との間に結合された抽象モデルビューアを確立。オブザーバーモード支持体は通信、オブザーバーモード会う「開閉原則」の要件を放送します。
構造:
次のようにオブザーバーパターンはいくつかの役割が含まれています。
- 件名:目標
- ConcreteSubject:ターゲット
- オブザーバー:オブザーバー
- ConcreteObserver:特定のオブザーバー
短所:
- 観察対象のオブジェクトは、多くの直接的および間接的観測を持っている場合、それはすべてのオブザーバーは、多くの時間を費やす必要が通知されます。
- 観測者と観測されたターゲットとの間に循環依存がある場合は、それらの間の循環への呼び出しをトリガーする対象を観察し、クラッシュにシステムを引き起こす可能性があります。
- オブザーバーパターンが観察されたターゲットオブジェクトが変更が起こるかであることを、視聴者のノウハウを聞かせて、ちょうどターゲットが変更された観察することを知るためのメカニズムではありません。
該当するシーン:
- オブジェクトを変更するには、それが発生し、対応する変更さに対応する1つのまたは複数のオブジェクトになり、特に変更するオブジェクトの数を知っていない、オブジェクト間の結合度を低減することができます。
- オブジェクトは、特定のオブジェクトを知らなくても、他のオブジェクトに通知します。
- あなたは、システムのチェーンにトリガーを作成する必要があり、オブジェクトA、Bの動作に影響を与えるだろう、BオブジェクトはCの動作に影響を与えるだろう、あなたはObserverパターンを使用して、トリガ・チェーンを作成することができます。