【发布时间】:2011-07-17 05:28:27
【问题描述】:
我正在开发 WPF Prism 应用程序,一切正常。我的视图模型都有接口,由 MEF 注入。
但是,我并不真正了解视图模型接口的好处。毕竟,一个视图是和它的视图模型绑定的,所以我认为永远不会有其他的实现。
其实,我的视图也有接口。看来这也太矫情了吧?
所以我的问题是:我不能只删除所有视图和视图模型接口并直接注入视图和视图模型吗?是否有任何理由保留视图和视图模型的接口?
谢谢, 升
【问题讨论】:
我正在开发 WPF Prism 应用程序,一切正常。我的视图模型都有接口,由 MEF 注入。
但是,我并不真正了解视图模型接口的好处。毕竟,一个视图是和它的视图模型绑定的,所以我认为永远不会有其他的实现。
其实,我的视图也有接口。看来这也太矫情了吧?
所以我的问题是:我不能只删除所有视图和视图模型接口并直接注入视图和视图模型吗?是否有任何理由保留视图和视图模型的接口?
谢谢, 升
【问题讨论】:
这是一个矫枉过正。我知道您可能想模拟您的 ViewModel,但我认为实用更重要。另外,你为什么还要模拟你的 ViewModel?任何需要模拟的逻辑都应该放入服务类恕我直言。
【讨论】:
接口 ViewWModel 可以让您在测试中模拟它们,接口 Views 看起来确实有些矫枉过正。你不会交换你的视图,并且 UI 测试可以在你的 ViewModel 的模拟上完成,所以我认为你真的不需要接口它们。
【讨论】:
我能想到的 ViewModel 接口的最大原因是您可以编写实现这些接口的模拟,以便在单元测试时使用。由于一个 ViewModel 可能会与另一个 ViewModel 通信,因此您可以在测试第一个 ViewModel 时将第二个 ViewModel 行为存根。
MVVM 模式可以更轻松地对类进行单元测试,因为它将数据和控件与 UI 层(更难编写单元测试)分开。不过,就我个人而言,我不会为自己的视图编写接口。
【讨论】: