2011-12-21 37 views
0

我曾觀看Jose Smith的視頻並閱讀了一些有關MVVM的教程,但我不明白MVVM是如何鬆散耦合的,即View和ViewModel。 (還是MVVM的新手,只嘗試過搭建它的項目)與MVP相比,MVVM是如何鬆散耦合的?

在MVP中所有的View,Model,Presenter都有接口,所以它們可以替換或模擬進行單元測試。

但是在MVVM中,我沒有看到人們在View或ViewModel上使用接口。 根據我的理解,ViewModel從Model中抽象出數據,並將其作爲屬性公開給View,並使用該模型進行業務邏輯和數據操作。

所以說,如果我有視圖模型與.SaveData()方法和視圖使用的一些屬性,如果他們沒有接口我如何替換與其他ViewModel?

有人可以向我解釋MVVM是如何鬆耦合的?

回答

1

MVVM也應該按照接口來實現。如果你有一個類MyViewModel,那麼它也會執行IMyViewModel,這樣它就可以被模擬進行測試。這個觀點也是一樣。所以在這個特定的意義上,MVVM與MVP沒有區別。

除此之外,「鬆散耦合」的定義非常鬆散,所以如果還有其他事情需要澄清,您需要更加具體。

注意:在MVVM中,擁有SaveDataCommand屬性而不是純粹的SaveData方法(儘管當然該命令是作爲方法實現的)。

+0

我明白了,但有沒有辦法在頁面中添加視圖作爲它們在xaml中的接口類型?或者大多數人只會以編程方式添加View和ViewModel?就像在構造函數中添加View和鏈接到ViewModel一樣。 (我希望你明白我的意思) – 2011-12-21 15:30:12

+0

@KingChan:是的,它將主要以編程方式完成(並且依賴關係將通過DI容器注入到每個對象中)。 – Jon 2011-12-21 15:34:34

+0

謝謝,現在都有道理! :) – 2011-12-21 15:36:09