パッシブビューでMVPを初めて実装しようとしていますが、このパターンで誰が誰に通知しているかについて少し混乱しています。ビューが変更された場合はビューがプレゼンターに通知し、次にプレゼンターが他のすべてのユーザー(他のビューとモデル)に通知することを理解しています。
今、私の場合、複数のビューがあり、UIの外部で変更できるモデルもあります。次の2つのシナリオが発生する可能性があります。
View [i]が変更され、Presenterに通知されます。プレゼンターは他のすべてのビューとモデルに通知する必要がありますが、View[i]には通知しません。さらに、ビューもモデルも、変更されたばかりであっても、変更通知をプレゼンターに送信することはできません(そうしないと、イベントの無限ループが発生します)。
モデルが変更され、プレゼンターに通知されます。プレゼンターはすべてのビューに通知する必要がありますが、モデルには通知しません。ただし、変更されたばかりであっても、どのビューも変更通知をPresenterに送信することはできません。
プレゼンターは誰に通知し、誰に通知しないのですか?また、モデルは変更通知を送信する必要があるかどうかをどのように知るのでしょうか。結局のところ、それは変更されたばかりですが、必ずしも誰が知っているわけではありません。
1つの可能性は、すべての人(モデル、ビュー、およびプレゼンター)が変更通知を自由に送信できるようにすることですが、変更を最初にトリガーしたオブジェクトへの参照を通知内に保存します(これにより、通知をイベントオブジェクトにカプセル化します)。その後、すべてのオブジェクトは、変更の元のトリガーでない場合にのみ通知を送信します。しかし、それを行うためのより簡単でクリーンな方法はありますか?