我正在學習ios中的mvvm,並且與viewModels混淆。我應該爲每個viewController創建一個viewModel嗎?或者爲每個模型創建viewModel?如果我選擇爲每個視圖創建一個viewModel,那麼我可能會在viewModel中使用多個模型。這不是一種代碼味道嗎?如何組織viewModels?
0
A
回答
3
模式的基本思想是有三層結構。在基礎層上,有模型(有人稱之爲服務),爲應用程序提供數據接口。 您構建View Models以包含應用程序的業務邏輯。這些當然會操縱數據。因此,在視圖模型中使用多個模型是正確的,有時也是必需的。 視圖使用從視圖模型公開的屬性向用戶呈現數據並將數據從用戶發送回業務邏輯。因此,通常每個視圖模型都有一個視圖,但您可能希望有不同的方式將相同的業務邏輯展示給用戶,以便允許使用一個視圖模型的更多視圖也可以。最後,問題可能是:我應該創建多少個視圖模型?答案並不容易:通常,作爲一個起點,您可以創建一個視圖模型來封裝可通過單個頁面呈現給用戶的單個離散功能。當您更多地使用模式時,您可能會演變該模式。 這是一個非常基本的想法,它允許您從視圖模型中獨立測試模型,這應始終被認爲是使用此模式最有用的優點之一。
1
我非常喜歡Antonello的回答。對於MVVM的一個非常酷的例子,請與Kickstarter的人一起看看這個objc.io視頻。
https://talk.objc.io/episodes/S01E47-view-models-at-kickstarter
相關問題
- 1. 如何組織和組織嵌套類
- 2. 在Caliburn框架中組織視圖和ViewModels
- 3. 如何組織DirectoryInfo.GetFiles()
- 4. 如何組織組織信息在組織模式,使它作爲輸出表?
- 5. 如何組織rebol代碼?
- 6. 如何組織Wordpress功能
- 7. 如何組織代碼包
- 8. 如何組織Perl模塊
- 9. 如何組織JS加載?
- 10. 如何組織Webdriver測試
- 11. 框圖如何組織?
- 12. 如何組織Ansible角色?
- 13. 如何組織Rails結構
- 14. 如何組織交易?
- 15. as3:如何組織班級
- 16. 如何組織項目?
- 17. 如何組織DataClasses.dbml文件
- 18. 如何組織一個webapp?
- 19. 如何組織REST API?
- 20. Android:如何組織布局
- 21. 如何組織css文件?
- 22. MongoDB:如何組織數據
- 23. 如何組織以下
- 24. 如何組織stackoverflow團隊?
- 25. 如何組織頭文件
- 26. 如何組織PHP代碼?
- 27. 如何組織TypeScript接口
- 28. 如何組織kivy佈局?
- 29. 如何組織網站?
- 30. 如何組織數據庫