2017-08-07 87 views
0

我正在學習ios中的mvvm,並且與viewModels混淆。我應該爲每個viewController創建一個viewModel嗎?或者爲每個模型創建viewModel?如果我選擇爲每個視圖創建一個viewModel,那麼我可能會在viewModel中使用多個模型。這不是一種代碼味道嗎?如何組織viewModels?

回答

3

模式的基本思想是有三層結構。在基礎層上,有模型(有人稱之爲服務),爲應用程序提供數據接口。 您構建View Models以包含應用程序的業務邏輯。這些當然會操縱數據。因此,在視圖模型中使用多個模型是正確的,有時也是必需的。 視圖使用從視圖模型公開的屬性向用戶呈現數據並將數據從用戶發送回業務邏輯。因此,通常每個視圖模型都有一個視圖,但您可能希望有不同的方式將相同的業務邏輯展示給用戶,以便允許使用一個視圖模型的更多視圖也可以。最後,問題可能是:我應該創建多少個視圖模型?答案並不容易:通常,作爲一個起點,您可以創建一個視圖模型來封裝可通過單個頁面呈現給用戶的單個離散功能。當您更多地使用模式時,您可能會演變該模式。 這是一個非常基本的想法,它允許您從視圖模型中獨立測試模型,這應始終被認爲是使用此模式最有用的優點之一。