我閱讀了關於在MVVM設計中實現的Event Aggregator模式可以幫助解耦ViewModels之間的通信。是否僅針對MVVM中的ViewModels使用EventAggregator?
我認爲Event Aggregator真的是個好主意。但是第二個想法是,ViewModels只使用Event Aggregator嗎?模型可以在Event Aggregator中發佈和訂閱事件嗎?
而且,通過這個,或許可以通過EventAggregator將ViewModel和Model之間的數據更改關聯起來。這可能會允許一個ViewModel從多個模型中檢索信息,而不需要ViewModel存儲對所有模型的引用。
如果我這樣做,是否會導致整個架構變得混亂並最終成爲反模式?最佳做法是什麼?
編輯:
我想我應該解釋一下爲什麼我問這一點。我看到三個可能的問題:
第一個,所以用DI,我的ViewModel包裝模型。然後,我的ViewModel可以與我的模型進行通信。但是,並非如此。因此,如果我的模型在其自身或外部進行了一些更改,則需要通知其ViewModel。
第二個,除了ViewModels必須與其他ViewModel進行通信外,在我看來,模型必須與ViewModel一樣,甚至更多地與其他模型進行通信。這些導致我認爲我可以將所有鏈接到EventAggregator的東西都鏈接起來。
第三,我發現有些情況下,單個ViewModel需要從多個模型中提取信息。但通過ViewModel的構造函數通過依賴注入,它只能從一個Model讀取。
我的直接反應是,它似乎不正確。因爲你可能只是通過一個接口在Model&ViewModel之間使用依賴注入。所以你不會手動管理用戶/出版商... – Johnny
@Johnny是的,我可以通過一個接口使用DI。但是我看到了兩個可能的問題:首先,在DI中,我的ViewModel封裝了模型。然後,我的ViewModel可以與我的模型進行通信。但是,並非如此。因此,如果我的模型在其自身或外部進行了一些更改,則需要通知其ViewModel。其次,除了ViewModel必須與其他ViewModel進行通信外,在我看來,模型必須像ViewModel一樣與其他模型進行交互,甚至更多。這些導致我認爲我可以將所有鏈接到EventAggregator的東西都鏈接起來。 – Carven
好吧,其實我看到了3個可能的問題,這些問題引起了我的這個問題。我以這個問題的動機更新了我的問題。 – Carven