4

いくつかの状態が変化したときにオブザーバー/リスナーに通知するプル指向のObservable/Listenableがあります。

状態は複数のデータのナゲットで構成されており、一部のオブザーバー/リスナーは状態全体を気にしません。

とにかくすべてのオブザーバー/リスナーに通知し、何も変更されていない場合は通知を無視できるようにすることをお勧めしますか?

または、通常、データの「ナゲット」ごとに個別のObservableを使用して、オブザーバー/リスナーが応答する必要のある通知のみを受け取ることが保証されますか?

状況次第ですか?

Observables / Listenablesの粒度について一般的な考えはありますか?

4

4 に答える 4

2

保守コストと配送コストのトレードオフを行っています。きめ細かいイベント定義がある場合、各オブザーバーは必要なものだけを取得するため、関心のないオブザーバーへの配信のオーバーヘッドを支払う必要はありませんが、新しい種類のナゲットをすべて追加する必要があるため、コストを節約できます。何らかの方法でシステム。

配信コストが比較的高い(メッセージがネットワーク上を流れる)Pub / Subメッセージングシステムでは、通常、トピックの定義に注意を払う必要があります。慎重に設計されたトピック階層が役立つことがよくあります。だから私たちは次のようなパターンを取得します

  sport
       football
              england 
                    premier
                    champioship
              scotland
                    spl
              france
                    ...
       cricket
              australia
                    ...
              india
              sri lanka

したがって、さまざまなレベルでのサブスクリプションを許可します。あなたはすべてのスポーツを購読することができますまたは(一部の人々がそうするかもしれないように)

    sport/football/england/championship/watford
于 2009-09-11T08:27:20.417 に答える
1

一般的な経験則として、特殊なインターフェイスは害よりも優れているので、私は間違いなく、より多くを実装します。

しかし、これは明らかに状況を呼び起こします。必要な場合にのみこの方法で専門化し、あなたの状況からはそのように思われます。そうでない場合は、小麦の収穫が必要であることを穀物のメーカーに通知するようなものです。それは単に適用されません。

于 2009-09-11T08:13:48.590 に答える
0

これを行う必要がある場合は、おそらく、ナゲットの種類ごとにイベントがあり、ナゲットごとに1つのグローバルイベントがあるObservableクラスを作成します。ちょっと中道みたい。

于 2009-09-11T08:15:35.233 に答える
0

メンテナンスだけではありません。より具体的には、オブザーバブルとオブザーバーの間のインターフェースがより結合されます。

Gang Of Fourの本には、この問題に関するセクションがあり、プッシュモデルとプルモデルの両方に反対するようアドバイスしています。プルモデルは非効率的である可能性があり、プッシュモデルは十分に再利用できない可能性があります。

ですから、状況次第です。プルモデルより少し上に行く傾向があります。

于 2009-09-11T10:38:26.253 に答える