那么,在MVVM模式中,两个模型不应该彼此认识或交谈是一种好的做法。这意味着您不应该在其他模型中创建一个模型的对象,然后注册事件或执行类似的事情。为什么两个模型不应该与每个其他模型对话
但是为什么如果两个模型互相了解会出现什么问题。我正在编写代码,如果我的模型都相互认识,会发生什么。
回答
视图模型彼此互操作通常是非常合适的。毕竟,视图中的父/子关系涉及父视图模型,该模型持有子视图模型的集合。在任何情况下,例如,父视图中命令的可用性取决于其子级的状态。有时候把它委托给一个单独的控制器类是适当的,但这样做通常也不值得。
这真的取决于您的应用程序的整体复杂性。有时候这种努力是必不可少的。有时它只是镀金。
当然,只要你不把对象分离出去,你不能自动对它们进行测试(这是MVVM首要的原因)。干杯 – 2010-11-05 09:20:49
一个人如何看待模型与另一个渲染器互操作,无论哪一个都无法测试? – 2010-11-05 14:46:55
如果你要规避MVVM在你想有一个很好的理由任何方式(否则你可能也只是把它写传统的代码隐藏和节省一些打字):)
使用MVVM有几个好处,主要用于非常松散的耦合,单元测试和重用。
松耦合的基本原理是这样的:
- 的视角知道如何显示一定形状的数据,但不知道那里的数据从何而来。
- ViewModel提供了一定形状的数据和设置,视图可以使用,但不知道谁在显示它。
- A Model知道如何保存通用数据,但不知道谁在使用它
- 控制器(大多数MVVM解释中缺少)决定要获取哪些数据,要显示哪些数据以及在哪里显示它。这是决策所属的地方。
如果你需要你的ViewModels相互了解,那么你很可能会缺少一个Controller对象来管理你的2个ViewModel和相关的Models/Views。
如果您可以提供更多关于模型目前链接的信息,我可能会提出一个替代方案。
- 1. 模型应该保持对其他模型的引用吗?
- 2. 为什么两个类,查看模型和域模型?
- 3. 有一个django模型可以属于两个其他模型(外键关系)
- 4. 我应该为每个模型创建一个接口吗?
- 5. 蛋糕:与其他模型
- 6. Django模型每表与模型每个选择
- 7. 我应该只使用两个对象的视图模型吗?
- 8. Backbone.sync每个模型
- 9. 可以模型“belongs_to”两个其他模型,并有嵌套关系?
- 10. backbone.js在其他模型中呈现/创建多个模型
- 11. MVC - 模型是否可以由其他几个模型组成?
- 12. 什么是事件循环,与使用其他模型有什么不同?
- 13. MVC/PDO:模型课应该怎么样,不应该在模型类中?
- 14. 在ASP.NET MVC中创建一个混合模型(与其他模型的位)?
- 15. 为了瘦身控制器的缘故,rails模型应该与其他模型有关吗?
- 16. 模型不连接,因为我认为他们应该是
- 17. has_many through:为什么我总是需要3个模型中的每个模型的2个关联?
- 18. 在模型中的两个filelds与参考相同的模型
- 19. 呈现一个表单,该表单创建一个嵌套在两个其他模型下的对象。
- 20. 将多个模型与模型关联
- 21. 如何创建引用两个其他对象的新模型对象?
- 22. Rails 3.0.x - 为什么其他模型正在更新?
- 23. 为什么C++模板参数应该声明为类类型?
- 24. 为什么传递给ModelAdmin.save_model的对象与模型不匹配?
- 25. 哪个层应该说域模型?
- 26. 访问NG-模型与其他指令
- 27. 为什么两个不同对象的地址应该不同?
- 28. MVC Razor - 将模型值设置为其他模型值?
- 29. Django从其他模型更新对象
- 30. 来自两个不同模型的相同模型中的两个外键
我认为这对于松耦合不好! – cordellcp3 2010-11-04 09:43:32