5

オブザーバー パターンで新しいオブザーバーに「初期状態」を公開するための推奨イディオムはありますか?

オブザーバー パターンを説明する利用可能な資料と例のほとんどは、オブザーバーが変更の通知を受けることに関心があることを前提としていますが、「初期状態」 (オブザーバーが変更をサブスクライブする時点の現在の状態) は気にしません。

1 つの可能性は、サブスクライブ時に新しいオブザーバーに「初期」(現在の) 状態をプッシュすることです。

public class MyObservable extends java.util.Observable
{
    public synchronized void addObserver(Observer observer)
    {
        super.addObserver(observer);

        // Push current state to this observer
        observer.update(this, currentState);
    }
}

より良い/好ましいアプローチはありますか?

4

2 に答える 2

1

あまり。ただし、通常、オブザーバー階層のルートにはいくつかの構成ファイルまたはデフォルト設定があるため、イベントの最初のカスケードは、それらが読み取り/設定されるとオフになります。

注意が必要な点は、すべての設定がグループ化されていることを確認して、監視可能なエンティティが「合法的」な順序で設定されるようにするか、少なくとも期待どおりに機能するようにすることです。

于 2012-10-22T10:37:15.723 に答える