MVVM 設計に実装されている Event Aggregator パターンについて読みましたが、ViewModel 間の通信を分離するのに役立ちます。
Event Aggregator は本当に良いアイデアだと思いました。しかし、よく考えてみると、Event Aggregator は ViewModel によってのみ使用されるのでしょうか? モデルは Event Aggregator のイベントに対して発行および購読できますか?
これにより、おそらく ViewModel と Model の間のデータ変更を EventAggregator を介して関連付けることができます。これにより、ViewModel がすべてのモデルへの参照を格納することなく、1 つの ViewModel が複数のモデルから情報を取得できる可能性があります。
これを行うと、アーキテクチャ全体が乱雑になり、最終的にアンチパターンになりますか? ベストプラクティスは何ですか?
編集:
なぜ私がこれを求めているのかについて少し説明する必要があると思いました。次の 3 つの問題が考えられます。
まず、DI を使用すると、ViewModel がモデルをラップします。その後、ViewModel はモデルと通信できます。ただし、その逆ではありません。したがって、モデル自体または外部で何らかの変更があった場合、ViewModel に通知する方法が必要です。
次に、ViewModel が他の ViewModel と通信する必要があることは別として、モデルは ViewModel と同じかそれ以上に他のモデルと通信する必要があるように思えます。これらは、すべてを EventAggregator にリンクさせることができると私が考えていたことにつながります。
3つ目は、単一の ViewModel が複数のモデルから情報を取得する必要がある場合があることです。ただし、ViewModel のコンストラクターを介した依存性注入により、1 つのモデルからしか読み取ることができません。